簡體   English   中英

javascript將數組轉換為對象以通過ajax發送數據

[英]javascript convert array to object for send data by ajax

我想通過ajax發送數據列表。 所以我將所有數據推送到2d數組中

但是jquery的ajax不接受數組數據,數據必須是對象或查詢字符串

由於javascript的Object沒有push函數,我必須使用array來構建數據列表。 在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");
    }
});

更改

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"]

您需要使用JSON.stringify()將對象轉換為JSON字符串。

http://json.org/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM