0

我有代码可以将 JSON 对象从 Jquery 传递到 PHP 页面。

问题在于发送跨域请求,如果我尝试

dataType:'json'

在 jquery 中,它给了我一个我理解的 xhttp 错误(安全)错误。

读完这篇文章后我也明白JSONP 只适用于 GET 方法

这就是我创建和使用对象的方式:

function order(id, name) {

        return {
            id: id,
            name: name
        }

    }

    var orders= [];

    orders.push(order("123", "Lamb Kebab"), product("234", "Chicken"));

    var jsonOrders = $.toJSON(orders); 

    $.post(
        "process.php",
        {orders: jsonOrders },
        function(data){
            $("#result").html(data);
        }
    );

我传递 JSON 对象跨域的解决方案是什么?如果这是不可能的,什么是替代解决方案?

请指教

谢谢

编辑:

jQuery代码

 function product(code, type) {

        return {
            code: code,
            type: type
        }

    }

    var products = [];

    products.push(product("333", "Product one"), product("444", "Second product"));

    var jsonProducts = $.toJSON(products); 

    $.ajax({
        type: "GET",
        url: "http://page.tld/foo.php",
        contentType: "application/json; charset=utf-8",
        dataType: "jsonp",
        data:JSON.stringify({products: jsonProducts}),

        error: function (msg) {
            //alert("error");
            console.log("Error here" +msg);         

        },


        success: function (msg) {
                console.log("Success"+msg);
        }
    });

**

PHP 端的错误是: Invalid argument provided for foreach() in ....

**

PHP 代码(简化版)

<?php header("Content-type: application/json; charset=utf-8");
require_once('json.php');

if (isset($_GET['products'])) {

$products = json_decode($_GET["products"],"true");
foreach ($products as $product){
echo $_GET['callback'] . '(' .(json_encode($product["type"])). ')';
}
}
else
{
echo $_GET['callback'] . '(' .(json_encode("not found")). ')';
}

?>

它正在进入能够找到 $_GET['products'] 的块中,这是我的解析错误吗?我确信这是一个明显的错误,但我无法发现它。

真的很抱歉

4

1 回答 1

0

我在 PHP 端使用了 GET 参数并解码了 JSON。

于 2012-08-09T10:42:54.113 回答