jquery – $.getJSON无效

前端之家收集整理的这篇文章主要介绍了jquery – $.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);
        });
     });
});

这里有四个问题:

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

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

解决方法

那里有几个问题:

> getJSON执行ajax请求. Ajax请求受Same Origin Policy的约束.除非您的页面是从http://test.com(或其他一些注意事项)加载的,否则它将无效.你可能正在寻找JSON-P(jQuery也支持),前提是服务器支持它.
> getJSON与所有ajax请求一样,默认情况下是异步的,因此您的第二个警报(带有用户列表)将在请求完成之前发生.虽然你可以使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,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相关文章