Javascript конвертировать массив в объект для отправки данных с помощью AJAX - PullRequest
0 голосов
/ 05 ноября 2011

Я хотел бы отправить список данных по ajax. Поэтому я помещаю все данные в двумерный массив

Но ajax из jquery не принимает данные массива, данные должны быть объектом или строкой запроса

, поскольку объект javascript не является функцией push, я должен использовать массив для построения списка данных. Есть ли какая-либо функция в jquery или javascript, позвольте мне

var countLine=$("line").length;
var lines=$("line");
var lineArr=new Array();
var linesArr=new Array();
var x1, y1, x2, y2;
for(i=0; i<countLine; i++)
{
    lineArr['x1']=lines[i].getAttributeNS(null, "x1");
    lineArr['y1']=lines[i].getAttributeNS(null, "y1");
    lineArr['x2']=lines[i].getAttributeNS(null, "x2");
    lineArr['y2']=lines[i].getAttributeNS(null, "y2");
    linesArr.push(lineArr);
}
$.ajax({
    type: "POST",
    url: "test.php",
    data: linesArr,

    async: true,
    cache: false,

    success: function(data){
        $("#txt").text(data);
    },
    error: function(XMLHttpRequest, textStatus, errorThrown){
        alert("fail");
    }
});

Ответы [ 2 ]

1 голос
/ 05 ноября 2011

Вам необходимо преобразовать объект в строку JSON, используя JSON.stringify().

http://json.org/

1 голос
/ 05 ноября 2011

Изменение

data: linesArr

до

data: { linesArr: linesArr }

Это отправит объект с единственным свойством "linesArr", которое содержит значение вашего массива.


РЕДАКТИРОВАТЬ: у вас есть большая проблема. Вы пытаетесь сохранить нечисловые свойства в массиве, как показано в этой строке:

lineArr['x1']=lines[i].getAttributeNS(null, "x1");

Вы также повторно используете один и тот же lineArr «массив» каждый раз в цикле. Следующий код будет работать намного лучше:

var lines = $("line");
var linesArray = [];

for (var i = 0; i < lines.length; ++i) {
    var line = lines[i];

    linesArray.push({
        x1: line.getAttributeNS(null, "x1"),
        y1: line.getAttributeNS(null, "y1"),
        x2: line.getAttributeNS(null, "x2"),
        y2: line.getAttributeNS(null, "y2")
    });
}

Тогда вы получите доступ к своим данным, как $_POST["linesArr"][0]["x1"].

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