Jquery getJSON到外部PHP页面
我一直在尝试向外部服务器发出ajax请求。 到目前为止,我已经了解到由于安全原因,我需要使用getJSON来执行此操作?
现在,我似乎无法对外部页面进行简单的调用。 我试图尽可能地简化它,但它仍然无法正常工作。 我有2个文件,test.html和test.php
我的test.html像这样调用localhost进行测试:
$.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页面调用localhost上的test.php页面,同一目录我没有收到任何错误,只是没有警告..
可能是你在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 domains
当您使用http://
时,jQuery会自动切换到JSONP(即使用脚本标记而不是XMLHttpRequest
)。 如果您在同一个域上有test.html和test.php,请尝试使用相对路径(并且不使用回调)。
小心moff的回答。 它有一个常见的XSS漏洞: http : //www.metaltoad.com/blog/using-jsonp-safely
最简单的解决方案是在test.php文件的任何输出之前添加以下代码,然后您可以更灵活地使用您使用的方法,标准的ajax调用应该起作用。
header ('Access-Control-Allow-Origin: *');
但是,当您从服务器获取数据时,请使用json回调函数。