2013-11-20 3 views
0

я следующий кусок кода:JQuery - Ajax не отправляет запрос

$("#profileImageButton").click(function() { 
    var id = this.id; 
    var cid = id.split('_')[1]; 

    $.ajax(
    { 
     type: "GET", 
     url: "/Profile/SetProfile", 
     dataType: "json", 
     data: { id: cid }, 
     async: true, 
     beforeSend: function() { 
      alert("BEFORE!"); 
     }, 
     complete: function (data) { 
      $(".bodyContentNotification").show(); 
      $(".bodyContentNotification").text(data.responseJSON.msg); 
      $(".bodyContentNotification").attr("id", "WarningNotification"); 
     } 
    }); 
}); 

Это экстремально простой код, но что-то не так. Когда я нажимаю кнопку, хром-отладчик ловит breakpoins в beforeSend (и, конечно, я предупреждаю сообщение), показы сообщений и ничего не происходит. Fiddler не поймает никакого события, и я думаю, ajax() не отправляет запрос. Что не так с моим кодом?

+0

loot на вкладке сети инструментов разработчика Chrome –

+0

Я не вижу ничего плохого в вашем коде, однако, я ставлю, что jshint мог вам сказать об этом. –

+0

Chrome не имеет сообщений. Но я заметил, что веб-страница перезагружается, когда я нажимаю кнопку предупреждения OK. – Fka

ответ

3

У вас есть ошибка!

Вы нацеливаете элемент с идентификатором profileImageButton.
На первой строчке вы делаете this.id, которая по-прежнему profileImageButton.
На следующей строке после этого вы используете id.split('_')[1];, но в этом массиве нет [1], так как в этом ID нет подчеркивания, и это ошибка.

+0

Нет, я думал об этом, но это правильно. – Fka

+0

Как получить второй индекс в массиве, который не имеет второго индекса. У идентификатора явно нет подчеркивания? – adeneo

0

Не пытайтесь разместить jQuery отправьте кнопку внутри разметки форума. Я написал что-то вроде этого в коде:

<form action="..." method="POST"> 
    ... 
    <button id="profileImageButton"></button> 
</form> 

profileImageButton - нажмите на эту кнопку пожаров событие, в котором я пытаюсь отправить Аякса получить запрос. ЭТО НЕПРАВИЛЬНО положить это внутри формы-сообщения.

+0

Нет ничего плохого в этом, вам просто нужно соответствующим образом закодировать его, например, путем предотвращения действия по умолчанию или события отправки. –

+0

В моем случае это был генератор ошибок. Спасибо за ответы, проблема решена. – Fka

+0

Это не генератор ошибок как таковой, просто кнопка имеет тип по умолчанию «submit», поэтому, представляя форму, и если вы знаете основы, вы это знаете и используйте кнопку «type =» «' или что-то подобное, чтобы избежать этого. Кстати, я все еще поддерживаю свой ответ, у вас есть ошибка. – adeneo

Смежные вопросы