我有代码可以将 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'] 的块中,这是我的解析错误吗?我确信这是一个明显的错误,但我无法发现它。
真的很抱歉