【发布时间】:2013-05-07 06:27:34
【问题描述】:
我用 PHP 做了一个简单的 API。 这个 API 回显是一个使用 json_encode 的对象。
举例:
echo json_encode($obj);
我正在使用 jQuery 从这个 API 中检索信息。 在测试脚本和 API 时,它们都在同一台服务器上运行。 一切正常。
jQuery 的一个例子:
$.ajax({
url: "php/api/test.php"
dataType: "json",
type: "POST",
succes: function(data) {
console.log("success");
},
error: function(response) {
console.log("error");
}
});
现在这工作正常。 但是,由于 API 在外部服务器上运行,这不再起作用(是的,我将 url 更改为正确的)。
我必须更改 API 和 javascript 才能使用 JSONP 在 jQuery 最终从 API 接收信息之前。
我的 jQuery 现在是:
$.ajax({
url: "http://externalserver/php/api/test.php"
dataType: "jsonp",
type: "POST",
succes: function(data) {
console.log("success");
},
error: function(response) {
console.log("error");
}
});
PHP 将返回这个以便工作:
echo $_REQUEST['callback'] . '(' . json_encode($obj) . ')';
现在我实际上宁愿使用 JSON 而不是 JSONP。
我知道我需要更改 PHP 文件以让 API 接受来自像我这样的外部脚本的传入请求。
你能告诉我我需要做什么吗?
【问题讨论】:
-
你可以使用 ajax 这个
-
我不明白您的问题,请说明您在寻找什么以及您需要什么。
-
@shin:你认为 OP 在做什么? JSON、jQ PHP、外部服务器……都指向 AJAX,不是吗?致 OP:您是在问如何让 X 域 XhttpRequests 工作?
-
现在调用的是外部服务器(我假设它与调用 javascript 的域不同),您只能使用 JSONP 或 CORS 请求。如果您不想使用这些方法,则必须使用服务器端请求来获取数据。
-
我更改了问题,希望它能澄清事情@RoryMcCrossan:在java中,您可以在页眉中添加一些内容,以便他接受对服务器的正常json(不是jsonp)调用(实际上是在其他域)。
标签: php javascript jquery json jsonp