我试图用json和php从一个服务器向另一个服务器发出请求。
我的html页面:
$.ajax({
type: "POST",
url: "https://api.domain.com/gateway/partners/create_account.ajax.php",
dataType: 'jsonp',
crossDomain: true,
data: { "name" : "Test name"},
success: function(data)
{
console.log(data.responseText);
}
});
我的php看起来像这样:
$name = $_GET['name'];
$data = array("Hello", $name);
echo json_encode($data);
我想在我的控制台上收到:Hello测试名称
我做错了什么?
答案 0 :(得分:3)
你是:
text/html
内容类型。JSONP响应的最小示例是:
<?php
header("Content-Type: application/javascript");
$name = $_GET['name'];
$data = array("Hello", $name);
echo $_GET['callback'];
echo "(";
echo json_encode($data);
echo ");";
然后你需要改变JS,以便type: "POST"
变为type: "GET"
而console.log(data.responseText);
变为console.log(data);
或者,您可以使用another technique to bypass the same origin policy并仍然使用POST。
答案 1 :(得分:0)
jsonp是一种古老的做法,也是一种不安全的做法,因为任何人都可以调用你的脚本。当jsonp调用失败时,To是非常默认的检索错误。
您可以在请求中实现CORS标头,然后只需使用简单的XHR调用。
加入标题:
Access-Control-Allow-Origin: *
将解决您的问题,但最好使用确切的域而不是通配符。