Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过';的问题';在URL中调用ajax_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 通过';的问题';在URL中调用ajax

Javascript 通过';的问题';在URL中调用ajax,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在尝试创建一个对weatherunderground的Ajax调用。 代码是: $(".city").autocomplete({ source: function( request, response ) { $.ajax({ // GET http://autocomplete.wunderground.com/aq?query=San%20F url: "http://autocomplete.wunderground.com/aq?qu

我正在尝试创建一个对weatherunderground的Ajax调用。 代码是:

$(".city").autocomplete({
    source: function( request, response ) {
    $.ajax({
        // GET http://autocomplete.wunderground.com/aq?query=San%20F
        url: "http://autocomplete.wunderground.com/aq?query=",
        dataType: "jsonp",
        data: {
            featureClass: "P",
            style: "full",
            maxRows: 12,
            name_startsWith: request.term
        },
        success: function( data ) {
            response( $.map( data.RESULTS, function( item ) {
            return {
                label: item.name + item.countryName,
                value: item.name
            };
        }));
     }
 });
},
minLength: 2,
select: function( event, ui ) {
   log( ui.item ?
      "Selected: " + ui.item.label :
       "Nothing selected, input was " + this.value);
 },
 open: function() {
    $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
 },
 close: function() {
   $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
   }
 });
无论我如何对待aq后面的问号,我都会得到一个“未捕获的SyntaxError:Unexpected token:”错误。如果我对数据进行编码?作为“?”我得到&?在生成的URL中。如果我移除了符号,请求功能正常。 如果我在整个字符串上使用encodeURL()或的encodeURL组件?结果是%3F,这也不起作用


我已经准备好了,有人知道该怎么办吗?

这个错误实际上是由不匹配的参数名而不是
url中的
引起的

有争议的参数是指定JSONP回调的参数:

http://.../aq?query=San%20F&callback=jQuery111___140___&ts=12345
//                          ^^^^^^^^
jQuery的默认名称是
回调

要更改参数,可以在请求选项中包括
jsonp:'cb'

$.ajax({
    url: "http://autocomplete.wunderground.com/aq?query=San%20F",
    dataType: "jsonp",
    jsonp: 'cb',

    // ...
});
例如:


而且,语法错误来自响应。如果没有
cb
参数,服务将使用JSON响应,缺少使其成为JSONP的“填充”

{"RESULTS": ...}
//        ^ syntax error
请注意,JSONP实际上是JavaScript,是通过
元素请求的。它只是利用了这两种语言在语法上的相似性。但是,它需要填充有效。

谢谢您的帮助。(我知道我不该这么说,但无论如何……)

答案有两个方面: 如上所述,需要'jsonp:'cb'的回调行

以及数据部分,而不是:

name_startsWith: request.term
它需要:

query: request.term

我不理解数据部分的正确语法。

在带有
url:
的行前面添加
类型:“GET”,
为什么不简单地将
查询
参数和其他所有内容一样放在
数据
对象中?@JayBlanchard:JSONP始终是GET。是的-我刚刚看到OP说的是“JSONP”@Bergi。我以前错过了。可能是重复的
name_startsWith: request.term
query: request.term