我一直试图向外部服务器发出AJAX请求。到目前为止,我已经了解到,出于安全原因,我需要使用getJSON来完成这个任务。
现在,我似乎不能简单地调用外部页面。我已经尽可能地简化了它,但是它仍然不起作用。我有两个文件,test.html & test.php
我的test.html打了一个这样的电话给本地主机进行测试:
$.getJSON("http://localhost/OutVoice/services/test.php", function(json){
alert("JSON Data: " + json);
});我希望我的test.php返回一个简单的‘测试’:
$results = "test";
echo json_encode($results);我可能犯了一个令人难以置信的新秀错误,但我似乎搞不明白。而且,如果这样做有效,我如何将数据发送到我的test.php页面,就像您喜欢test.php?id=15一样?
test.html页正在本地主机上调用test.php页面,与我没有任何错误的目录相同,只是没有警报。
发布于 2009-04-26 14:26:44
这可能是因为您在test.php中没有回调。而且,json_encode只接受一个数组:
$results = array("key" => "value");
echo $_GET['callback'] . '(' . json_encode($results) . ')';
// the callback stuff is only needed if you're requesting from different domainsjQuery在使用JSONP时自动切换到JSONP(即使用脚本标记而不是XMLHttpRequest)。如果在同一个域中有test.html和test.php,请尝试使用相对路径(而不是回调)。
发布于 2010-11-19 20:57:15
对莫夫的回答要小心。它有一个常见的XSS漏洞:http://www.metaltoad.com/blog/using-jsonp-safely
发布于 2012-04-06 20:45:16
最简单的解决方案是在任何输出之前将下面的代码添加到您的test.php文件中,这样您就可以更灵活地使用您使用的方法,标准的ajax调用应该可以工作。
header ('Access-Control-Allow-Origin: *');但是,当您从无法控制的服务器获取数据时,请使用json回调。
https://stackoverflow.com/questions/790910
复制相似问题