【发布时间】:2014-07-23 10:00:56
【问题描述】:
我有两个 HTML 页面:
1) 第一个 HTML 页面 (page1.html):
<html lang="en">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
event.preventDefault();
function json1(id,name){
this.id = id;
this.name = name;
}
id_list = Array();
id_list.push(new json1("1","TEST_1");
id_list.push(new json1("2","TEST_2");
id_list.push(new json1("3","TEST_3");
id_list.push(new json1("4","TEST_4");
id_list.push(new json1("5","TEST_5");
id_list = JSON.stringify(id_list);
document.write(id_list);
});
</script>
</head>
</html>
2) 第二个 HTML 页面 (page2.html):
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="application/json; charset=utf-8" >
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
event.preventDefault();
$.ajax({
url : 'http://www.mydomain.com/page1.html',
type : 'POST',
async: false,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data){
alert("Return OK");
},
error: function(xhr, ajaxOptions, thrownError){
alert('ERROR = ' + xhr.status + ' - ' + thrownError);
}
});
});
</script>
</head>
</html>
当我执行http://page2.html 时,.ajax 返回我: ERROR = 200 SyntaxError - Unexpected token
当我将 dataType: "json" 更改为 "text" 时,.ajax 将返回 page1 的所有代码 HTML。
我需要返回在 page1.html 中创建的 JSON。
谁能帮帮我?
谢谢
ps:对不起我的英语。
【问题讨论】:
-
Ajax 并没有真正在外部页面上执行 javascript,它只是返回该页面的内容,这就是为什么你得到 整个页面,这就是它的工作方式,你做错了。
-
您似乎误解了如何创建 JSON 响应。您正在向 HTML 页面发出请求,因此您正在检索所有 HTML 源代码,包括未解释的 JS。如果要返回 JSON,则需要将 JSON 字符串作为唯一返回的文本。由于您所看到的原因,使用客户端 JavaScript 是不可能的。您应该将您的 JSON 提要修改为服务器端资源。
标签: javascript jquery html ajax json