使用json从url获取值

时间:2013-05-08 12:33:49

标签: javascript ajax jsonp

我尝试从此网址获取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然后它返回undefined。
如果结果没有asciiName那么我不想要未定义的

4 个答案:

答案 0 :(得分:1)

    asciiname = '';
    asciilast = '';

    if(data1.result[i].asciiName){
        asciiname = asciiname+data1.result[i].asciiName+",";
        console.log(asciiname);
        asciilast = asciiname.replace(/\,$/, '');
    }

答案 1 :(得分:1)

检查未定义

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

var value = data1.result[i].asciiName;
if (value) {
   //do work here
}

答案 2 :(得分:1)

asciiname = asciiname + data1.result[i].asciiName+",";// this line

为其指定默认值:

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

或者如果你想避免任何类型的if

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

"default value"替换为您想要的任何内容。我正在使用三元条件:

(condition) ? a : b; // equivalent to if(condition) {a} else {b};

答案 3 :(得分:1)

有一张像 -

这样的支票
jQuery.type(data1) === "undefined" or `jQuery.type(data1.result[i])=== "undefined"`
success方法中

并相应地处理逻辑。