jQuery getJSON到外部PHP页面

时间:2009-04-26 14:17:03

标签: php jquery ajax json getjson

我一直在尝试向外部服务器发出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返回一个简单的'test':

$results = "test";
echo json_encode($results);

我可能会犯一些令人难以置信的菜鸟错误,但我似乎无法弄明白。 另外,如果这样可行,我怎样才能将数据发送到test.php页面,就像test.php一样?id = 15?


test.html页面调用localhost,同一目录下的test.php页面 我没有得到任何错误,只是没有警告..

3 个答案:

答案 0 :(得分:16)

可能是你在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

当您使用XMLHttpRequest时,jQuery会自动切换到JSONP(即使用脚本标记而不是http://)。如果您在同一个域上有test.html和test.php,请尝试使用相对路径(并且不使用回调)。

答案 1 :(得分:15)

小心moff的回答。它有一个常见的XSS漏洞:http://www.metaltoad.com/blog/using-jsonp-safely

答案 2 :(得分:2)

最简单的解决方案是在输出到test.php文件之前添加以下代码,然后您可以更灵活地使用哪种方法,标准的ajax调用应该有效。

header ('Access-Control-Allow-Origin: *');

但是,当您从无法控制的服务器获取数据时,请使用json回调函数。