0

我正在使用 jquery 自动完成。当 ajax 请求完成时 jquery 调用 jsonpCallback 和响应。你能建议将 jsonpCallback(data) 函数放在哪里以使用 $.each 中的数据

$(".autoComplete").autocomplete({ source: function(req, add){

            $.ajax({
                  type: "GET",
                  url: "http://herokory.herokuapp.com/autocomplete/jsonpCallback/a",
                  dataType:"jsonp"
            });

                var suggestions = [];  

                //process response  
                $.each(data, function(i, val){       //how do I get data variable                         
                suggestions.push(val.value); });

                 add(suggestions);
            }
});  
4

2 回答 2

1

根据:jquery api 你应该实现一个“成功块”

$.ajax({
  url: 'ajax/test.html',
  success: function(data) {
    $('.result').html(data);
    alert('Load was performed.');
  }
});

对于您的示例:

var suggestions = [];  
$(".autoComplete").autocomplete({ source: function(req, add){

            $.ajax({
                  type: "GET",
                  url: "http://herokory.herokuapp.com/autocomplete/jsonpCallback/a",
                  dataType:"jsonp"
                  success: function(data) {

                    $.each(data, function(i, val){                         
                    suggestions.push(val.value); });
                          add(suggestions);
                    }
                 }
            });



});  

//编辑:也许这会有所帮助:jsonpcallback

于 2012-08-22T08:56:27.053 回答
0
    $(".autoComplete").autocomplete({ source: function(req, add){

            $.ajax({
                  type: "GET",
                  url: "http://herokory.herokuapp.com/autocomplete/jsonpCallback/a",
                  dataType:"jsonp"
    success: function(data) 
            {
                alert('Here is my data' +  data);
            }


            });

}); 

您应该在 ajax 调用中添加一个成功函数,这意味着如果 GET 请求成功,请执行以下操作,这是您将放置 .each 循环以遍历数据的地方。

还有其他块可以帮助您调试代码,例如错误块等。

于 2012-08-22T08:59:33.310 回答