PHP,Javascript,phonegap跨域与JSONP GET错误

时间:2014-03-06 23:22:05

标签: javascript php jquery json cordova

我正在尝试构建一个phonegap应用程序,其中我使用AJAX GET将坐标从服务器端PHP脚本传递到客户端javascript。我对AJAX POST没有任何问题,但GET给了我一些问题。每当我尝试使用dataType:“jsonp”进行GET时,我都会收到一个javascript控制台警告:

资源解释为脚本,但使用MIME类型text / html传输......

考虑到我可以完全控制服务器端脚本,所以我可以将数据转换为JSON,这很奇怪。服务器是否有可能不支持JSONP(文档说它支持JSON,它是一个免费的主机!)。我已经尝试添加各种标题到PHP脚本,但似乎不起作用。此外,我正在使用chrome纹波仿真器以防万一这是相关的。

我已经看过各种类似的问题,但我似乎无法深入了解它。

无论如何,这是我的代码和任何帮助将不胜感激。

PHP片段(我从mysql表中提取一些数据但这一切都正常工作):

$info = array(
  'lat'    => $row[LAT],
  'lng' => $row[LNG],
  'id' => $row[ID]
);
echo json_encode($info);

相关的javascript代码:

$.ajax({    
    type: "GET",
url: "http://whereto.bugs3.com/name.php",
    dataType: 'jsonp',
    jsonp: 'callback',
    jsonpCallback: 'jsonpCallback',
    success: function(data) {   
        alert(data.lng);
        }
    });

提前致谢

1 个答案:

答案 0 :(得分:1)

您需要使用“jsonpCallback”函数包装输出以成为jsonp(带填充的json)

echo 'jsonpCallback(' . json_encode($info) . ');';

另请参阅:http://en.wikipedia.org/wiki/JSONP#How_it_works