2011-12-20 4 views
2

У меня есть массив из которых каждый элемент является массивом, например, так:Отправить вложенный массив с помощью JQuery .ajax

results = { 
       {1, "A", 11, 0, 7, 0}, 
       {2, "A", 13, 2, 2, 1}, 
       {3, "A", 7, 0, 2, 2} 
      } 

И мне было интересно, как я мог бы отправить на PHP с помощью функции .ajax JQuery в?

Мой JQuery вызов на данный момент выглядит следующим образом:

$.ajax({type: "POST", 
     url: "updateResults.php", 
     data: "results="+results, 
     success: function(data) { 
      if(data == "ok") { 
       $("#msgSuccess").show(); 
      } else { 
       $("#msgError").show(); 
      } 
     } 
}); 

Спасибо!

+4

Это не является правильным JavaScript. Возможно, вы имели в виду '[]' вместо '{}'? Это зависит от того, в каком формате вы хотите отправить данные. Простейшим может быть «data: {results: results}», или вы сериализуете его как JSON. –

+0

Это дубликат http://stackoverflow.com/questions/191881/serializing-to-json-in-jquery. Он в основном говорит использовать метод stringify, как показано ниже, фактически рекомендованный Джоном Ресигом. var json_text = JSON.stringify (ваш_объект, null, 2); –

+0

Повторяющийся вопрос: [http://stackoverflow.com/questions/2032044/jquery-post-multidimensional-array-via-ajax](http://stackoverflow.com/questions/2032044/jquery-post-multidimensional-array- via-ajax). – Chandresh

ответ

2

Проще всего использовать объект для data:

data: {results: data}; 

Jquery автоматически URI-кодирования данных, если вы делаете так, что более выгодно, чем Мессинг вокруг с конкатенацией строк самостоятельно.

2

использование serializeArray() http://api.jquery.com/serializeArray/

+0

Работает только с элементами формы ... –

+0

затем используйте только данные: результаты, –

0

Если результаты в виде строки, то это работает Fiddle

var results = '{{1, "A", 11, 0, 7, 0}, {2, "A", 13, 2, 2, 1}, {3, "A", 7, 0, 2, 2}}'; 
results = results.replace(/{/gi, '['); 
results = results.replace(/}/gi, ']'); 
results = eval(results); //This is your array format which can be sent as JSON request data 

$.each(results, function(index, item){ 
    $.each(item, function(ind, it){ 
     alert(it); 
    }); 
});