Jquery。不能获取jSOn值

时间:2016-12-14 05:38:57

标签: javascript jquery json

我有以下代码,我正在尝试从JSON检索用户ID,名字和一些值,但我得到了未定义。

我该如何解决这个问题?

 function getVal(val1,val2) {       
    var myval2 =URL +"webUser?email="+email;
    var uId='';


    $.ajax({
        url: myval2,
        dataType: "json",

         cache: false, 
        success: function(data, textStatus, jqXHR) {



            jQuery.each(data, function(k,v) {

             console.log( " k "  +k  + " v" + v);

             uId =v.uId;



             });       
    },
        error: function(jqXHR, textStatus, errorThrown) {
            console.log('FAILED to get  JSON from AJAX call' + jqXHR + textStatus + errorThrown);

        }
    });       
      console.log("userid " +userId);
     return userId;

   }    

JSON

{
  "userId": 2,
  "emailAddress": "some@some.com",
  "roleId": 1,
  "firstName": "Hulk",
  "lastName": "Ogan",
  "company": "MTT",
  "title": "Lord Vader",
  "phoneWork": "",
  "phoneMobile": "",
  "lastModifiedBy": "system",
  "versionNumber": 1
}

4 个答案:

答案 0 :(得分:2)

您可以简单地获取userid和其他属性的值

userID = data.userId;

如果您的datasingle object

,则loop只需data,您需要array of objects,因此无需循环播放

答案 1 :(得分:0)

您可以简单地获取userid和其他属性的值

userID = data['userId'];



var data = {
  "userId": 2,
  "emailAddress": "some@some.com",
  "roleId": 1,
  "firstName": "Hulk",
  "lastName": "Ogan",
  "company": "MTT",
  "title": "Lord Vader",
  "phoneWork": "",
  "phoneMobile": "",
  "lastModifiedBy": "system",
  "versionNumber": 1
};
console.log(data['userId']);



 注意:您不能从异步ajax请求中返回任何值,在ajax调用的成功函数中执行所有逻辑

答案 2 :(得分:0)

我能看到的一个问题是你的json记录只是:一条记录​​;因此,您不需要$ .each来遍历ajax结果 - 只有在返回的数据由具有可能很多记录的json数组组成时才有必要。

除此之外,您只需要进行一些错误跟踪:

  1. 您网站上的http操作是否设置为处理GET操作?如果需要POST操作,则需要在ajax调用中指定。
  2. 从1开始 - 你确定你对url的调用会返回json结果吗?您可以在浏览器中导航到该URL并查看json结果吗?
  3. 如果两者都得到了解决,请检查"数据"包含何时返回。如果它是空的或没有很好的形成json,找出原因。

答案 3 :(得分:0)

你不需要jQuery.each,因为你没有JsonArray并且你有JsonObject。 您可以使用以下方式轻松获取数据:

userID = data.userId;

userID = data['userId'];

(如Madalin& Leopars的回答)