0

我有一个自动完成输入,访问者可以在其中输入位置,并在您输入时提供建议。为此,我正在使用 Geonames 网络服务器。

如果 Geonames Web 服务器上发生错误,我正在尝试返回异常消息。例如,如果我超出了我的 Web 服务器请求限制,我希望脚本向我发送电子邮件警报。

返回的异常消息是 JSON。

这是带有 error() 函数的脚本的一部分。我故意在数据中的用户名参数中打错字以获取错误但没有出现警告。

$(function() {
        $( "#city" ).autocomplete({
            source: function( request, response ) {
                $.ajax({
                    url: "http://api.geonames.org/searchJSON",
                    dataType: "jsonp",
                    data: {
                        q: request.term,
                        countryBias: "US",
                        featureClass: "P",
                        style: "full",
                        maxRows: 10,
                        ussername: "demo",
                        operator: "OR"
                    },
                    success: function( data ) {
                        response( $.map( data.geonames, function( item ) {                                                           
                            return {
                                label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
                                value: item.name,
                                saved_country: item.countryName,
                                saved_state: item.adminName1,
                                saved_city: item.name,
                                saved_zipcode: item.postalcode,
                                saved_latitude: item.lat,
                                saved_longitude: item.lng,                                                                                              
                            }
                        }));  
                    },  
                    error: function( data ) {
                        response( $.map( data.geonames, function( item ) {                                                           
                            return {
                                request_status: item.status                             
                            }
                            alert("Error msg!");
                        }));  
                    },                                              
                });             
            },
4

2 回答 2

1

项目尚未在该范围内声明。尝试这个:

error: function( data ) {  
    var request_status= data.status;  
    //do stuff with status  
}
于 2011-05-06T22:50:15.000 回答
1

Geonames 将在成功处理程序中返回此错误信息,而不是错误处理程序。所以你必须在你的成功函数中询问:

success: function( data ) {
    if(typeof(data.status) != 'undefined'){ //It means there was an error
       var errorObject = data;
       //Now you have access to errorObject.status, errorObject.status.message and so on
       //Do something with your error object
       return; //Avoid execution of the rest of the code of this function
    } //Can add an else here if you want
    response( $.map( data.geonames, function(item){
      ...

}

希望这可以帮助。干杯

于 2011-05-06T23:10:19.840 回答