在浏览器和卷曲中确定网址,在ajax中超时

时间:2014-08-03 06:30:44

标签: jquery ajax jsonp

我正在尝试让Geobytes ajax city搜索在我的服务器上运行。我从字面上剪切了粘贴http://www.geobytes.com/free-ajax-cities-jsonp-api.htm的代码,但GetJSON例程没有做任何事情;没有.done(),. error()..甚至是回调。

我插入了一个.ajax-check,它告诉我有一个超时错误。但是当我将来自console.log()的URL粘贴到浏览器中时,它可以正常工作。通过PHP curl服务器端,相同的URL也可以正常工作。

有什么可能出错的想法吗?

(Geobytes论坛似乎没有维护,我的帖子从未出现过)

由于

<script type="text/javascript">

jQuery(function () 
 {
     jQuery("#f_elem_city").autocomplete({
        source: function (request, response) {
         console.log("searching for http://gd.geobytes.com/AutoCompleteCity?callback=?&q="+request.term);
         $.ajax({
            url: "http://gd.geobytes.com/AutoCompleteCity?callback=?&q="+request.term,
            dataType: 'json',
            timeout: 8000,
            success: function( data, string ) { console.log("success"); console.log(string);},
            error: function( data, string ) { console.log("error"); console.log(string); }
        });
        console.log("after ajax");
         jQuery.getJSON(
            "http://gd.geobytes.com/AutoCompleteCity?callback=?&q="+request.term,
            function (data) {
                console.log("success");
             response(data);
            }
         );
        },
        minLength: 3,
        select: function (event, ui) {
         var selectedObj = ui.item;
         jQuery("#f_elem_city").val(selectedObj.value);
         return false;
        },
        open: function () {
         jQuery(this).removeClass("ui-corner-all").addClass("ui-corner-top");
        },
        close: function () {
         jQuery(this).removeClass("ui-corner-top").addClass("ui-corner-all");
        }
     });
     jQuery("#f_elem_city").autocomplete("option", "delay", 100);
    });
</script>

<form action="" method="post" name="form_demo" id="form_demo" enctype="multipart/form-data" onsubmit="return false;">
<p><b>Please enter</b> your city here to see it work. <input class="ff_elem" type="text" name="ff_nm_from[]" value="" id="f_elem_city"/>
</form>

2 个答案:

答案 0 :(得分:0)

尝试为跨域ajax请求添加JSONP。 因此dataType: 'json'必须为dataType: 'jsonp'

答案 1 :(得分:0)

我有类似的问题,这是跨域请求。当我在响应服务器中添加“Access-Control-Allow-Origin”标头时,问题就解决了。

ajax GET request times out for URL when browser and CURL work

由于您似乎正在使用第三方服务器,因此我不确定这是否可行。