【发布时间】:2014-03-25 00:49:49
【问题描述】:
我在远程服务器上有一个包含这些数据的 students.json 文件
{
"studentId":101,
"firstName":"Carissa",
"lastName":"Page",
"emailId":"laoreet.libero.et@Mauris.net"
}
现在我正在尝试使用 jQuery.ajax() 从不同的服务器(跨域)读取students.json。
这是我的html页面
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Metadata Test Page</title>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
</head>
<body>
<div id="studentdisplay">
<p>Getting Student Details</p>
</div>
</body>
</html>
我的 JavaScript 文件中有这段代码
$(document).ready(function() {
$.ajax({
type: 'GET',
url: 'http://rupeshreddy.com/students.json',
contentType: "application/json",
dataType:"jsonp",
success: function (data) {
var output;
output = '<table><tr><th colspan=2>Student</th></tr>';
output += '<tr><td>First Name</td><td>'+ data.firstName +'</td></tr>';
output += '<tr class="alt"><td>Last Name</td><td>'+ data.lastName +'</td></tr>';
output += '<tr><td>Student Id</td><td>'+ data.studentId +'</td></tr></table>';
$("#studentdisplay").html( output );
}
})
.error(function(jqXHR, textStatus, errorThrown){
$("#studentdisplay").html(textStatus+" - "+errorThrown);
});
});
当我打开网页时出现此错误:
parsererror - 错误:jQuery111006872769086621702_1395648763612 不是 叫”。
当 .html 和 .json 文件在同一台服务器上时,同样的代码可以正常工作(当然数据类型将是 json)。仅当两个文件位于不同的服务器时才会发生错误。
我浏览了很多过去的问题和文章,但没有一篇能帮助我解决这个问题。感谢您提供任何帮助和建议。
链接到 JSFIDDLE http://jsfiddle.net/rL5fK/1/
================================================ ====
更新 - 已解决
我将我的数据包装在students.json中,就像这个回调({...data...}) 现在我的 student.json 是这样的
callback({
"studentId":101,
"firstName":"Carissa",
"lastName":"Page",
"emailId":"laoreet.libero.et@Mauris.net"
})
在我的 ajax 调用中,我添加了附加行 jsonpCallback: 'callback'。 现在我的电话是这样的。
$.ajax({
url: 'http://rupeshreddy.com/students.json',
dataType: "jsonp",
jsonpCallback: 'callback',
success: function(data) {
console.log(data);
var output;
output = '<table border="1"><tr><th colspan=2>Student</th></tr>';
output += '<tr><td>First Name</td><td>'+ data.firstName +'</td></tr>';
output += '<tr class="alt"><td>Last Name</td><td>'+ data.lastName +'</td></tr>';
output += '<tr><td>Student Id</td><td>'+ data.studentId +'</td></tr></table>';
$("#studentdisplay").html( output );
}
});
工作 JSFIDDLE 链接http://jsfiddle.net/esWSH/2/
谢谢大家
【问题讨论】:
-
你的ajax调用错误块被触发了吗?
-
@Felix 如果我使用 dataType:"json" 我在开发人员工具中得到这个 加载资源失败:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问 Origin 'localhost'。
-
@dreamweiver 是的 ajax 调用的错误块被触发,并抛出此“错误解析器错误 - 错误:未调用 jQuery111006872769086621702_1395648763612”
标签: javascript jquery html ajax json