1

我试图从这个网址获取 asciiName:-

http://services.gisgraphy.com/geoloc/search?lat=21.283300399780273&lng=72.9832992553711&radius=10000<br>

使用ajax jsonp。
这是完整的代码:-

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<Script>

var asciilast;
var asciiname="";
var lat="21.283300399780273";
var lng="72.9832992553711";
var radius="10000";

function getascii(){
  $.ajax({
    url: "http://services.gisgraphy.com/geoloc/search?lat="+lat+"&lng="+lng+"&radius="+radius+"&format=json",
    async: false,
    dataType:'jsonp',
    success: function(data1) {
      for(i=0;i<data1.result.length;i++) {
        asciiname = asciiname+data1.result[i].asciiName+",";
        console.log(asciiname);
        asciilast = asciiname.replace(/\,$/, '');
      }
      alert(asciilast);
    }
  });   
}
</Script>
<body onload="getascii()">
</body>

在这段代码的帮助下,我得到了完美的输出。
但有时它会产生问题,例如某些结果没有 asciiName 然后它返回未定义。
如果结果没有 asciiName 那么我不想要 undefined

4

4 回答 4

1
    asciiname = '';
    asciilast = '';

    if(data1.result[i].asciiName){
        asciiname = asciiname+data1.result[i].asciiName+",";
        console.log(asciiname);
        asciilast = asciiname.replace(/\,$/, '');
    }
于 2013-05-08T12:37:47.003 回答
1

比检查未定义

var value = data1.result[i].asciiName || "";

或者

var value = data1.result[i].asciiName;
if (value) {
   //do work here
}
于 2013-05-08T12:37:53.943 回答
1
asciiname = asciiname + data1.result[i].asciiName+",";// this line

为其分配一个默认值:

asciiname += data1.result[i].asciiName ? data1.result[i].asciiName : "default value";

或者,如果您想避免if任何类型的 s:

asciiname += data1.result[i].asciiName || "default value";

"default value"用你想要的任何东西替换。我正在使用三元 if 条件:

(condition) ? a : b; // equivalent to if(condition) {a} else {b};
于 2013-05-08T12:38:21.520 回答
1

有一个像 -

jQuery.type(data1) === "undefined" or `jQuery.type(data1.result[i])=== "undefined"`

success方法中并相应地处理逻辑。

于 2013-05-08T12:39:14.597 回答