2013-06-10 3 views
0

Я не могу получить обратный вызов успеха для работы в jQuery ajax-вызове. Следующий код вызывает interpretResponse() просто отлично, но, конечно, resultJSON является undefined:Функция jQuery ajax success callback - как сделать ее анонимной?

 var that = this; 
     jQuery('#fsForm1492441').submit(function(event) { 
      event.preventDefault(); 
      jQuery.ajax({ type: "POST", 
       url: "format_result.php", 
       data: jQuery(this).serialize(), 
       success: that.interpretResponse(), 
       dataType: "json" 
      }); 
     }); 

     function interpretResponse(resultJSON) { 
     // code here to handle resultJSON 
     } 

Я хочу что-то вроде:

   success: function(resultJSON) { 
         that.interpretResponse(resultJSON); 
         }, 

Как следует написано success обратного вызова?

+0

вместо установки 'dataType: 'json'', вы должны установить заголовок в файле, который вы вызываете,' 'Content-type: application/json''. FAR более надежный, и меньше JS для синтаксического анализа. – PlantTheIdea

ответ

1

просто сделать это:

success: interpretResponse, 

ваш код будет выглядеть следующим образом -

var that = this; 
jQuery('#fsForm1492441').submit(function (event) { 
    event.preventDefault(); 
    jQuery.ajax({ 
     type: "POST", 
     url: "format_result.php", 
     data: jQuery(this).serialize(), 
     success: interpretResponse, 
     dataType: "json" 
    }); 
}); 

function interpretResponse(resultJSON) { 
    // code here to handle resultJSON 
} 
+0

Хммм ... это не работает для меня. – ptmalcolm

+2

'interpreeResponse' не является свойством объекта. Вероятно, это должно быть просто «success: interpreponse». – bfavaretto

0

Ответ выше было правильно, но оказалось, что я имел дело с другой проблемой. Странная ошибка в FireFox, которая держит аякс-вызовы от прохождения прошлого readyState 1, заставляла функцию обратного вызова не загружаться. Я закончил использовать обходное решение, описанное здесь: Ajax won't get past readyState 1, why? В основном, чтобы Firefox установил обратный вызов onload, а не onreadystatechange.

Спасибо pXL за ответ на вопрос, как я его попросил.