将js Array()转换为JSon对象以与JQuery .ajax一起使用

Ale*_*ekc 28 javascript arrays jquery json

在我的应用程序中,我需要通过ajax发送一个javascript数组对象到PHP脚本.像这样的东西:

var saveData = Array();
saveData["a"] = 2;
saveData["c"] = 1;
alert(saveData);
$.ajax({
    type: "POST",
    url: "salvaPreventivo.php",
    data:saveData,
    async:true
    });
Run Code Online (Sandbox Code Playgroud)

数组的索引是字符串而不是int,因此像saveData.join('&')这样的东西不起作用.

想法?

提前致谢

Pao*_*ino 63

如果它不是数组,请不要使它成为数组,使其成为对象:

var saveData = {};
saveData.a = 2;
saveData.c = 1;

// equivalent to...
var saveData = {a: 2, c: 1}

// equivalent to....
var saveData = {};
saveData['a'] = 2;
saveData['c'] = 1;
Run Code Online (Sandbox Code Playgroud)

按照使用Arrays的方式进行操作只是利用了Javascript对Arrays的处理,而不是正确的方法.


Sha*_*ina 7

如果已经定义了数组,则可以通过循环遍历数组的元素来创建json对象,然后可以将其发布到服务器,但是如果要创建数组,就像上面的情况一样,只需创建一个json对象由保罗·贝尔甘蒂诺(Paolo Bergantino)吸食

    var saveData = Array();
    saveData["a"] = 2;
    saveData["c"] = 1;

    //creating a json object
    var jObject={};
    for(i in saveData)
    {
        jObject[i] = saveData[i];
    }

    //Stringify this object and send it to the server

    jObject= YAHOO.lang.JSON.stringify(jObject);
    $.ajax({
            type:'post',
           cache:false,
             url:"salvaPreventivo.php",
            data:{jObject:  jObject}
    });

    // reading the data at the server
    <?php
    $data = json_decode($_POST['jObject'], true);
    print_r($data);
    ?>

    //for jObject= YAHOO.lang.JSON.stringify(jObject); to work,
    //include the follwing files

    //<!-- Dependencies -->
    //<script src="http://yui.yahooapis.com/2.9.0/build/yahoo/yahoo-min.js"></script>

    //<!-- Source file -->
    //<script src="http://yui.yahooapis.com/2.9.0/build/json/json-min.js"></script>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助