如何从jQuery .ajax帖子中显示返回的JSON

时间:2013-05-29 19:01:03

标签: jquery json parsing string-parsing

开始处理完全基于JSON数据构建的项目。它像这样返回:

{"location":{"id":10,"contactPhone":"8675309","contactName":"bob","name":"bill smith","zipCode":"90210","state":"California","address1":"104 S. Olive","city":"Temecula","country":"USA"},"success":true}

我很乐意处理以HTML格式(通常是表格)返回的数据,方法是使用.find和其他过滤来遍历DOM以查找成功标记。我不知道如何用JSON做到这一点 - 我需要过滤到最后一个对象“success”并检查它是真还是假。使用HTML返回的数据,我这样做:

submitHandler: function(form) {
    $.ajax({
     //other ajax stuff
      success: function(data) {
        var answer = $(data).find("td:eq(1)").text();
        var message = $(data).find("td:eq(3)").text();
        //console.log(data);
        if (answer == "True") {
          $('#messages').show().html(message);
      } else {
          $('#messages').show().html('Error logging in: ' + message);
      }
    }
  });
  return false;
  }
  1. 即使使用这种方法,我也不完全明白了 功能(数据)表示我已使用数据,消息和响应 没有真正理解它们之间的区别是什么。
  2. 我可以发布到web服务并通过此.ajax调用获取返回的JSON

    $.fn.serializeObject = function() {....}
    submitHandler: function(form){
        var wrapper = {};
        var location = {};
        wrapper.location = $("#newLocation").serializeObject();
            $.ajax({
                type: $(form).attr('method'),
                url: '/web/service/' + 'locationService' + '/' + 'createLocation',
                dataType: 'json',
                async: false,
                data: JSON.stringify(wrapper),
                success: function(msg) {
                        console.log('success' + msg );
                        //need to traverse to success and if true, do something
                },
                        error: function(msg) {
                        console.log('failure' + msg );
                        //need to traverse to success and if false, do something
                }
        });
        return false;
    }
    
    1. 如何过滤到JSON字符串(字符串或对象?)中的“成功”部分
    2. JSON字符串IE“ contactPhone ”中的键/数字对的正确用语是什么(甚至是正确的):“ 8675309
    3. 如果“成功”,你如何显示数据:“真实” - 我会自己处理,但如果有人有好的方法,我会很感激一些建议。我想你只是以某种方式附加到桌子上?

      我对JSON有很多疑问,我试图以一般方式提出问题,以便我得到的帮助可以帮助别人,我为这篇文章的篇幅道歉。我感谢任何帮助,如果要求,将缩短/编辑此问题。

2 个答案:

答案 0 :(得分:4)

msg这是一个json格式的对象。你可以获得这样的成功价值:

success: function(msg) {
                    console.log('success' + msg.success );
                    if(msg.success) { //could be wrote: msg.success === true
                        //do some stuff
                    }
            },

“contactPhone”: “8675309”

contactPhone是关键,“8675309”是值。但是在您的示例中,要获取“contactPhone”值,您需要先获取位置对象:

var contactPhoneValue = msg.location.contactPhone;

答案 1 :(得分:3)

JSON(JavaScript Object Notation)是一种轻量级数据交换格式。人类很容易读写。机器很容易解析和生成。 http://www.json.org/

现在,用于读取和写入json对象属性的代码与普通javascript对象的代码非常相似。

$ajax({
  dataType:'json',
  success:function(data){
        console.log(data['success']);   //returns for whatever will be the value for succes
        //or
        console.log(data.success);   //returns for whatever will be the value for succes
        data.location['contactName'] = "new name";                    
 }
});

访问和操作javascript和Json对象是一样的 这是一个非常好的指南:
http://www.dyn-web.com/tutorials/obj_lit.php



更新:
一个更好的版本,也许这可以帮助:
http://jsfiddle.net/hvzcg/4/