我可以通过jquery.getJSON发送数组吗?

时间:2014-07-09 08:00:02

标签: php jquery ajax arrays getjson

我有这个jquery代码:

$(".cashOutButton").click(function(e){
    e.preventDefault();
    var sendArray=[{'value': '123', 'type': 'Buy_Order_ID'},
                    {'value': '44.20', 'type': 'Set_Price'},
                    {'value': 'John', 'type': 'seller_Name'},
                    {'value': 'S', 'type': 'Sell_Type'}
                    ];

    var sendData = {'sendArray': sendArray};

    $.getJSON('addToSession.php',sendData,function(data){
        console.log(data);
    });        

})

和这个PHP代码 - addToSession.php(它只是为了测试它是否正常工作,最终的代码会有所不同):

<?php
print_r($_GET['sendArray']);
?>

它不起作用。什么都没有回来。我的问题是,我可以将一组对象发送到$ .getJSON吗?还有哪些其他解决方案可以发送阵列?它不一定是对象数组,它可以是数组数组,如果可行的话。

2 个答案:

答案 0 :(得分:0)

您可以,这将返回您期望的数据。您可以通过查看浏览器开发人员工具的“网络”标签中的响应来测试这一点。

它不会显示在console.log中,因为getJSON要求它获得的响应是​​JSON,而您正在响应声称是HTML文档的内容(PHP的默认设置)但是其中包含print_r的输出(不是有效的HTML或JSON)。

发送JSON,它将起作用:

<?php
    header("Content-Type: application/json");
    echo json_encode($_GET['sendArray']);
?>

答案 1 :(得分:-1)

在这种情况下,您应该使用http://api.jquery.com/jQuery.post/代替。

JQuery.getJSON,作为方法名称应该用于GET JSON数据,而不是发送它。多数民众赞成因为你的数组被转换为GET,并且它生成像

这样的json请求 ?

<强> addToSession.php未定义= 123&安培;未定义= 44.20&安培;未定义=约翰&安培;未定义= S

要发送JSON数据,请使用jQuery.post和&#34; json&#34;数据类型。

$.post( "addToSession.php", sendData, function( data ) {
  console.log( data);
}, "json");

你的阵列应该是最终的:

{sendData: [ {'value': '123', 'type': 'Buy_Order_ID'},
         {'value': '44.20', 'type': 'Set_Price'},
         {'value': 'John', 'type': 'seller_Name'},
         {'value': 'S', 'type': 'Sell_Type'}
]}