【发布时间】:2010-10-20 16:49:11
【问题描述】:
我正在尝试使用 jQuery 中的 getJSON 函数来导入一些数据并触发回调函数。回调函数不运行。但是,如果我用 get 函数尝试同样的事情,它就可以正常工作。奇怪的是,即使我将“json”作为类型传递,它也可以与 get 函数一起使用。为什么会这样?我在 Firefox 3 和 IE 7 中测试了以下文件:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title>ajax test</title>
<script type="text/javascript" src="/jquery-1.3.2.min.js"></script>
</head>
<body>
<input type="button" id="test1" value="get">
<input type="button" id="test2" value="getJSON">
<input type="button" id="test3" value="get with json type">
<script type="text/javascript">
$("#test1").click(function() {
$.get("index.html",
function(response) {
alert('hi');
//works
}
)
});
$("#test2").click(function() {
$.getJSON("index.html",
function(response) {
alert('hi');
//doesn't work
}
)
});
$("#test3").click(function() {
$.get("index.html",
function(response) {
alert('hi');
//works
},
"json"
)
});
</script>
</body></html>
无论我访问什么 URL,只要它位于同一个域中,这似乎都会发生。我尝试传递一些数据,但这并没有什么不同。
当然,我可以像在第三个测试函数中那样使用 get 函数来解决这个问题,但我仍然很好奇为什么会发生这种情况。
我知道这里有人问过similar question,但它没有回答我的问题。
【问题讨论】:
-
会不会是json格式不好?
-
也许我应该更清楚。 index.html 是我在上面发布的文件。我只是想访问文档本身,这不是最有用的东西。我只是把它放在那里,因为它简单方便。同样,我为 URL 输入的内容似乎并不重要。 json需要有效吗?
-
问json是否需要有效可能听起来很傻,但如果需要,为什么即使没有有效的json,第三个测试函数也能工作?
-
尝试使用一些有效的json来测试,看看会发生什么。
标签: javascript jquery ajax