代码之家  ›  专栏  ›  技术社区  ›  Adron

jqueryajax POST调用的JSON结果在哪里?

  •  0
  • Adron  · 技术社区  · 14 年前

    我在网页上设置了这个代码。

        <div id="gridResults">
    </div>
    
    <script type="text/ecmascript">
        jQuery.ajax({
            url: "http://localhost:6002/AggregateServices.svc/incident/10",
            type: "POST",
            async: true,
            success:
                    function(json) {
                        var table = jQuery('<table />').attr('cellspacing', 0).attr('cellpadding', 4);
                        var header = jQuery('<tr />')
                            .append('<td>Case Number</td>')
                            .append('<td>Company</td>')
                            .append('<td>Created</td>')
                            .append('<td>Description</td>')
                            .append('<td>Stamp</td>')
                            .append('<td>Status</td>')
                            .append('<td>Type</td>');
                        table.append(header);
                        var row = jQuery('<tr/>')
                            .append('<td>' + json.CaseNumber + '</td>')
                            .append('<td>' + json.Company + '</td>')
                            .append('<td>' + json.Created + '</td>')
                            .append('<td>' + json.Description + '</td>')
                            .append('<td>' + json.Stamp + '</td>')
                            .append('<td>' + json.Status + '</td>')
                            .append('<td>' + json.Type + '</td>');
                        table.append(row);
                        jQuery('#gridResults').append(table).show();
                    },
            error: function() { alert('An error occurred!'); }
        });
    </script>
    

    带有jQuery的简单AJAX示例。

    案例编号公司创建的描述戳记状态类型

    {“CaseNumber”:“2”,“Company”:“Company”,“Created”:“9/1/2010 6:31:45 PM”,“Description”:“此处有一些说明”。,“Stamp”:“/Date(-62135568000000-0800)/”,“Status”:“Stat”,“Type”:“Type”}

    看起来不错吧?有人知道为什么这不是解析吗?还是我错过了什么?

    我试着把行放入一个附加循环,想。。。我不知道我在想什么,但还是没用。我所做的就是这样,唯一的区别是它甚至没有给我在第一个样本结果中得到的“未定义”。

    jQuery.each(json, function() {
    var row = jQuery('<tr/>')
        .append('<td>' + this.CaseNumber + '</td>')
        .append('<td>' + this.Company + '</td>')
        .append('<td>' + this.Created + '</td>')
        .append('<td>' + this.Description + '</td>')
        .append('<td>' + this.Stamp + '</td>')
        .append('<td>' + this.Status + '</td>')
        .append('<td>' + this.Type + '</td>');
    table.append(row);});  
    
    5 回复  |  直到 14 年前
        1
  •  3
  •   SLaks    14 年前

    dataType: 'json' ajax 参数。。

        2
  •  1
  •   griegs    14 年前

        3
  •  0
  •   David Conde    14 年前

    当ajax调用完成时,jQuery通常不会将json数据作为函数参数发送,如果发送,则只是字符串代码,您需要对其进行评估。尝试以下任一想法:

    var j = eval(json);
    

    而不是

    .append('<td>' + json.Company + '</td>')
    

    .append('<td>' + j.Company + '</td>')
    

    或使用

    jQuery.getScript()
    

    而不是 jQuery.Ajax()

    我更喜欢第二个,因为它是我用的

        4
  •  0
  •   griegs    14 年前

    MyObj obj = new MyObj(); 然后设置属性然后返回那个对象?

    json.d.MyObj 或者只是 json.MyObj.propertyName;

        5
  •  0
  •   Adron    14 年前

    same origin problem . 我在一个单独的项目中再次设置了整个解决方案(因为我头脑冷静,不想安装和运行IIS来删除Cassinni)。我在这里概述了我的整个解决方案 tying it all together

    总之,上面的代码实际上是正确的,并且确实有效。但是,这些端口会使它在任何符合安全性的浏览器(换句话说,非IE浏览器)中失败。IE似乎喜欢忽略同一来源的问题,而把它作为浏览器的一个巨大的安全隐患。:/