$ .getJSON无效

我在jQuery中搜索相关主题。 但我没有看到任何方法来解决我的问题。

$(document).ready(function(){ $("#inputForm").submit(function(event){ $(":text").each(function() { var inputText = $(this).val(); var userList = []; var weblink = 'http://test.com'; // problem is from here. $.getJSON(weblink, function(data){ alert(weblink); // this statement doesn't show up $.each(data, function(entryIndex, entry){ userList.push(entry['from_user']); }); }); alert(userList); }); }); }); 

这里有四个问题:

  1. 为什么第一个警报(’weblink’)没有出现。
  2. 为什么这段代码无法从网站获取json数据
  3. 此代码的目标是从json文件获取from_user标记并存储到userList数组中。
  4. 变量在“$ .each(data,function(entryIndex,entry){”语句中,该函数有两个输入参数,一个是entryIndex,另一个是entry,我很奇怪这两个参数是针对什么的?我该如何使用这两个参数。

任何人都可以帮我解决这个问题。 我在这里待了一天。 非常感谢你。

那里有几个问题:

  1. getJSON执行ajax请求。 Ajax请求受同源策略的约束。 除非您的页面是从http://test.com (或其他一些注意事项)加载的,否则它将无效。 你可能正在寻找JSON-P (jQuery也支持),只要服务器支持它。

  2. 与所有ajax请求一样, getJSON在默认情况下是异步的,因此您的第二个警报(使用用​​户列表)将请求完成之前发生。 虽然你可以使ajax请求同步,但这是一个非常糟糕的主意(在请求期间锁定了大多数浏览器的UI)。 相反,只需在回调中收到用户列表后使用它,而不是尝试在调用getJSON的函数中使用它。

编辑 :您在下面说过,您正在尝试使用Twitter搜索API。 该API 确实支持JSON-P,因此如果您使用JSON-P来执行请求,它应该可以工作。 例如:

 $(document).ready(function(){ $("#inputForm").submit(function(event){ $(":text").each(function() { var inputText = $(this).val(); var userList = []; var weblink = 'http://search.twitter.com/search.json?q=&ands=google'; // problem is from here. $.ajax({ url: weblink, dataType: "jsonp", // <== JSON-P request success: function(data){ alert(weblink); // this statement doesn't show up $.each(data.result, function(entryIndex, entry){ // <=== Note, `data.results`, not just `data` userList.push(entry['from_user']); // <=== Or `entry.from_user` would also work (although `entry['from_user']` is just fine) }); alert(userList); // <== Note I've moved this (see #2 above) } }); }); }); }); 

...但是你肯定不想为表单中的每个文本字段执行此操作?

这是一个实例,但没有表单(只做一个请求,而不是每个字段的请求)。

只需添加链接即可

 &callback=? 

要么

 ?callback=? 

(如果它是第一个也是唯一的GET变量)这将使您调用JSONP调用,这与同源策略没有问题。

不确定,但不需要获取参数? 试试这个:

 $.getJSON(weblink, {}, function(data){ 

你在使用MVC平台吗? 显然,默认情况下,MVC 2.0会阻止对返回JsonResult的操作的GET请求。 查看:

http://mhinze.com/2010/04/13/json-hijacking-in-asp-net-mvc-2/

我在升级现有的应用程序(用MVC v1编写)时遇到了同样的问题,该应用程序使用.getJSON调用将数据从MVC Controller拉到View(通过jquery / javascript)并且无法弄清楚为什么它们不起作用我尝试了不同的版本jquery没有运气,然后我找到了上面的链接。 我更改为POST(并且还略微改变了从Controller发送数据的方式 – 使用了字典)并使其工作 – 最后!!

祝好运! JayD

我想补充一个原因,为什么jQuery.getJSON()可能无法在IIS for Windows下的开发环境中按预期响应。

按照此处提供的所有过程,我无法从* .json文件中获取任何数据,只有当我将扩展名更改为* .js时,才会返回响应状态

 {"status"="404", "statusText"="Not Found"} 

然后我记得在IIS中有一些未指定的MIME /类型。 为扩展名为.json的文件添加MIME / Type application / json解决了我的问题。

有关如何在iis7上添加MIME /类型的信息。