сериализовал возвращаемый результат Ajax в Jquery - PullRequest
0 голосов
/ 20 марта 2012
<script type="text/javascript">

   $(document).ready(function(){
      setInterval(function(){
         $.ajax({
             url: "getResult.php",

             success: function(results){

             var details = results.serializeArray();    //Serialized Here

             var output = '<tr><td>Name</td>\n\
                           <td>Type</td>\n\
                           <td>Data</td>\n\
                           <td>Detail</td></tr>';

             $.each(results, function(i, result){                               
                 output += '<tr><td>' +  result.Name + '</td><td>' 
                                      +result.Type + '</td><td>' 
                                      +result.data + '</td><td>
                                      <a href=javascript:newPopup("test.php?detail='+details +'")>Detail</a></td></tr>';       //pass serialized value here
             });

             $("#insideTable").html(output);

             }, dataType: "json"});
        }, 2000);
});

</script>

Я хотел бы сериализовать возвращенный результат Ajax, а также передать его по ссылке в виде строки запроса.

Однако это не работает, и ошибка отчета консоли - results.serializeArray is not a function.

Добро пожаловать за любую помощь, заранее спасибо!

Ответы [ 4 ]

1 голос
/ 20 марта 2012

Если results является строкой JSON (что, судя по тому, как вы пытаетесь ее использовать, заставляет меня думать, что это так), вам нужно использовать

var result jQuery.parseJSON(results);

, это вернет Object, где выможет использовать result. синтаксис

Примечание: причина, по которой вы получаете serializeArray is not a function, заключается в том, что функция jQuery serializeArray() ожидает запуска объекта jQuery - т.е. $(results).serializeArray()

0 голосов
/ 20 марта 2012

Метод .serializeArray () создает массив объектов JavaScript, готовый для кодирования в виде строки JSON. Он работает с объектом jQuery, представляющим набор элементов формы. Вы получаете эту ошибку, потому что вы передаете что-то неправильно в $results.

см. http://api.jquery.com/serializeArray для рабочего примера ..

0 голосов
/ 20 марта 2012

results.serializeArray не вызывается, потому что он не является частью $.ajax, попробуйте это:

$(document).ready(function(){
  setInterval(function(){
     $.ajax({
         url: "getResult.php",

         success: function(results){
         var output = '<tr><td>Name</td>\n\
                       <td>Type</td>\n\
                       <td>Data</td>\n\
                       <td>Detail</td></tr>';
var details = results.serializeArray();


         }, dataType: "json"});
    }, 2000);
});

также вы можете найти ошибку разбора на <a href=javascript:newPopup("test.php? detail='+details +'")>Detail</a></td></tr>';

0 голосов
/ 20 марта 2012

метод serializeArray() может быть применен (прикован) к элементу jQuery (что такое results?), И, поскольку вы находитесь внутри объекта, вы также получите ошибку разбора (вместо этого вы должны написать details : results.serializeArray(),)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...