【问题标题】:Ajax : Unable to fetch array from webservice (.asmx) (Error: TypeError: invalid 'in' operand a)Ajax:无法从 web 服务 (.asmx) 获取数组(错误:TypeError:无效的“in”操作数 a)
【发布时间】:2015-11-19 14:44:21
【问题描述】:

我想从托管在服务器上的 Web 服务(ASP.net Web 服务)获取数据。
这是我获取数据的 Ajax 代码。它成功获取数据,但是当我通过循环传递它时,它显示错误 TypeError: invalid 'in' operand a

Ajax 代码

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$.ajax({
  url: 'http://demo.demoname.com/MyService.asmx/UserDetails',
  type: 'GET',
  dataType: 'xml',
  success: function(data) {
    var jsonArray = JSON.parse(JSON.stringify(data.activeElement.innerHTML))
    console.log(jsonArray);
    $.each( jsonArray, function( intValue, currentElement ) {
        // Do work with currentElement
        console.log(currentElement );       
    });

  },
  error: function(e) {
    //called when there is an error
    //console.log(e.message);
  }
});
</script>

此代码返回 console.log(jsonArray);

的以下输出
[{"Name":"Patna Chilli Pawder","Sku":"250gm","Price":300},{"Name":"Turmeric Powder","Sku":"750gm","Price":400}]  

但是当循环调用时,它的显示TypeError: invalid 'in'operand a

其他有用信息

  • 响应

[{"Name":"Patna Chilli Pawder","Sku":"250gm","Price":300},{"Name" :"姜黄粉","Sku":"750gm","价格":400}]

  • XML

[{"Name":"Patna Chilli Pawder","Sku":"250gm","Price":300},{"Name":"姜黄粉","Sku":"750gm","Price":400 }]

请注意,我尝试通过在 WAMP 中设置虚拟主机从本地主机获取数据

【问题讨论】:

    标签: jquery asp.net ajax xml web-services


    【解决方案1】:

    该错误通常表明您正在尝试迭代字符串。也就是说,因为您接收的 XML 具有 JSON 字符串的值,所以您不必使用 JSON.stringify,而只需使用 JSON.parse 将字符串转换为对象。以下是根据您的情况访问数据的方式。

    success: function(data) {
        var dataArray = JSON.parse(data.activeElement.innerHTML);
        $.each( dataArray, function( index, property ) {
            // Do work with currentElement
            console.log( property );     
        });
    },
    

    希望这会有所帮助。

    【讨论】:

    • 消息:响应不是数组
    • 试试console.log(data) 看看它的输出,这样我就可以了解你得到的实际响应。
    • 同样,响应不是数组
    • 您可以在 XML 中看到 firebug 的值并在我的问题中回复
    • 您可以控制响应吗?就像,您可以简单地输出 JSON 而不是在 XML 标记内输出 JSON 字符串吗?如果您正在构建提供 JSON 响应的 API,则不应将其包含在 XML 标记中。只需将 JSON 直接转储到文档中,然后将 $.ajax() 调用中的 dataType 设置更改为json,你可以像我上面的回答一样处理数据。
    猜你喜欢
    • 1970-01-01
    • 2014-08-17
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 2017-04-07
    • 1970-01-01
    相关资源
    最近更新 更多