gpt4 book ai didi

jQuery getJSON 调用未返回所需的参数?

转载 作者:行者123 更新时间:2023-12-03 22:29:42 28 4
gpt4 key购买 nike

我在 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);
});
});
});

这里有 3 个问题:

  1. 为什么第一个警报('weblink')没有显示?
  2. 为什么此代码无法从网站获取 json 数据?
  3. 此代码的目标是从 json 文件中获取 from_user 标记并将其存储到 userList 数组中。

“$.each(data, function(entryIndex,entry){”语句中的变量,该函数有两个输入参数,一个是entryIndex,另一个是entry。我想知道这些参数的用途以及如何使用它们?.

谁能帮我解决这个问题。我已经在这里存货一天了。非常感谢。

最佳答案

有几个问题:

  1. getJSON 执行 ajax 请求。 Ajax 请求受 Same Origin Policy 的约束。除非您的页面是从 http://test.com 加载的(或其他一些注意事项),否则它将无法工作。您可能正在寻找JSON-P (jQuery 也支持),前提是服务器支持。

  2. getJSON 与所有 ajax 请求一样,默认情况下是异步的,因此您的第二个警报(包含用户列表)将在之前发生 em> 请求完成。虽然您可以使 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)
}
});
});
});
});

...但您肯定不想对表单中的每个文本字段执行此操作吗?

Here's a live example但没有表单(并且只执行一个请求,而不是每个字段的请求)。

关于jQuery getJSON 调用未返回所需的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6002325/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com