【发布时间】:2013-02-05 07:06:17
【问题描述】:
可能重复:
JSONP request: “Resource interpreted as Script but transferred with MIME type text/html”
任何人都可以让我知道我在这里做错了什么。
这是本地 URL / localhost 上带有 json 文件的代码。而且这项工作没有问题
(function() {
var json_url = 'http://localhost:8888/MOD/some-folder/app/mysql-to-json.php?page=index';
$.getJSON(json_url, function(data){
$.each(data, function(i, item) {
$('#state-list').append('<li><a href="display.html?state=' + item.d_state + '" data-transition="slide" rel="external">' + see_abbrv(item.d_state) + '</a></li>');
});
$('#state-list').listview('refresh');
});
}) ();
但是当我这样做时,我刚刚将 json_url 更新为来自本地主机的 json_url 的实时 url。
数据不会显示。当我尝试检查页面时出现警告:
资源解释为脚本,但使用 MIME 类型 text/html 传输:“http://www.live-server.com/app/mysql-to-json.php?page=index&callback=jQuery18201751285600475967_1360047415705&_=1360047415772”。
使用实时网址更新代码:
(function() {
var json_url = 'http://www.live-server.com/app/mysql-to-json.php?page=index&callback=?';
$.getJSON(json_url, function(data){
$.each(data, function(i, item) {
$('#state-list').append('<li><a href="display.html?state=' + item.d_state + '" data-transition="slide" rel="external">' + see_abbrv(item.d_state) + '</a></li>');
});
$('#state-list').listview('refresh');
});
}) ();
【问题讨论】:
-
在本地代码上,您进行了 ajax json 调用,但在实时代码上,您进行了 jsonp 调用,这完全不同。
-
资源/路径是否驻留在您当前的应用程序中?在这种情况下,您应该使用相对路径。
-
不确定这是否是唯一的原因,但如果您可以控制服务器,则应将 jsonp 请求的响应的 mime 类型设置为“application/javascript”。您确定 url 实际上返回 jsonp 吗?显然,如果 jQuery 在 url 中看到 ?callback 它会自动将请求视为 jsonp。
-
Content-Type text/html 尝试按照我的回答将其设置为 applicatio/json
标签: javascript jquery getjson