опубликовать массив с помощью jquery ajax - PullRequest
9 голосов
/ 26 апреля 2011

Я пытаюсь сделать что-то довольно простое, но не могу найти решение. Я хочу разместить многомерный массив на странице php с помощью функции jauery .ajax, но не могу правильно сериализовать массив.

Код выглядит следующим образом

var dataToSend = new Array();
  dataToSend["page"] = location.href;
  dataToSend["data"] = new Array();
  var dataindex = 0;
  jQuery(".myclass").each(function(){
      dataToSend["data"][dataindex]=new Array();
      dataToSend["data"][dataindex]["selector"] = unique_selector(jQuery(this), "");
      dataToSend["data"][dataindex]["contents"] = jQuery(dataToSend["data"][dataindex]["selector"]).html();
  });
  jQuery.ajax({
      type: 'POST',
      url: "/main/save.php",
      data: JSON.stringify(dataToSend),
      dataType: "json",
      success: function(data){alert(data);}
  });

В основном я не уверен, как правильно передать массив dataToSend. Сейчас firebug показывает сообщение как пустое, хотя массив загружен всевозможными полезными вещами.

Спасибо

Daniel

Ответы [ 3 ]

11 голосов
/ 27 апреля 2011

Вы определяете new Array();, но вы используете их как new Object(). Попробуйте использовать объекты.

Попробуйте это:

var dataToSend = { 
    page: location.href, 
    data: []
};
var dataindex = 0;
jQuery(".myclass").each(function(){
    var temp = unique_selector(jQuery(this), "");
    dataToSend.data[dataindex++] = {
        selector: temp,
        contents: jQuery(temp).html()
    };
});
jQuery.ajax({
    type: 'POST',
    url: "/main/save.php",
    data: JSON.stringify(dataToSend),
    dataType: "json",
    success: function(data){ alert(data); }
});
0 голосов
/ 29 марта 2014

Использовать

data: { '': dataToSend }

Я использовал это в похожем сценарии, и это сработало как очарование ...

0 голосов
/ 27 апреля 2011

Взято со страниц справки PHP:

у вас может быть многомерный массив в форме ввода

HTML Пример:

<input name="data[User][firstname]" type="text" />
<input name="data[User][lastname]" type="text" />
...

Внутри php скрипт после отправки вы можете получить доступ к отдельному элементу следующим образом:

$firstname = $_POST['data']['User']['firstname'];
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...