【问题标题】:How to iterate through a list of strings returned from a web service using JQuery如何使用 JQuery 遍历从 Web 服务返回的字符串列表
【发布时间】:2009-05-28 11:20:46
【问题描述】:

这是我的第一次 JQuery 体验,而且我的最后期限非常紧迫。这是一个有点尴尬的问题,但这里有。我正在调用一个返回字符串列表的 Web 服务(它工作并返回 OK)。代码如下

$(document).ready(
    function() 
    {
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "CatList.asmx/GetCatergoies",
            data: "{}",
            dataType: "json",
            success: onActionCompleted
        });
    }
)

function onActionCompleted(data) {

    var resultData = data['d'];
    alert(resultData);
 }

警报会生成一个逗号分隔的 Web 服务结果字符串。我一生都无法弄清楚如何迭代结果。当我做这样的事情时:

resultData.each(
   alert(this)
)

我在 Firebug 中得到的只是这个错误:

resultData.each is not a function

任何指针?

【问题讨论】:

    标签: jquery web-services


    【解决方案1】:

    使用 Array.split() 将产生一个数组:

    var string = "red,blue,green,orange"
    
    $.each(string.split(','), function(){
      alert(this)
    })
    

    【讨论】:

      【解决方案2】:

      考虑 string.split() 而不是 jQuery:

      var items = results.split(',');
      
      for( var i = 0; i < items.length; i++ ) {
        alert( items[i] );
      }
      

      【讨论】:

        【解决方案3】:

        听起来您的网络服务给了您一个 csv 字符串。将其拆分为一个数组,将 jQuery 包裹在其周围,并为每个元素添加一个回调函数,如下所示:

        $(resultData.split(",")).each(function () {
            alert(this);
        });
        

        【讨论】:

        • each 也适用于普通数组。所以 $.each(resultData.split(","), function(){});应该也可以。
        • 确实,为了便于阅读,我只是更喜欢 $(array).each(callback) 语法而不是 $.each(array, callback)。
        【解决方案4】:

        谢谢!如果没有反馈,我将无法解决它。我仍然不完全确定 resultData 是什么格式。我在代码上做了一些复制和粘贴,所以不确定哪些 data['d'] 将列表转换为 json 术语。

        当我尝试拆分 resultdata 时,我在 Firebug 中遇到了这个错误:

        resultData.split 不是函数

        最后,我只是在没有拆分的情况下在 resultdata 上使用了 $.each() 并且它起作用了。

        function onActionCompleted(data) {
        
            var resultData = data['d'];
            $.each(resultData, function() {
                alert(this)
            })
        }
        

        【讨论】:

        • 这意味着 data['d'] 已经是一个数组:)。你是怎么想到它是一个逗号分隔的字符串的?
        • 因为 alert(resultData);显示命令分隔的字符串。那一定是javascrip格式化数组的方式?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-24
        • 1970-01-01
        • 2021-02-11
        • 1970-01-01
        • 2020-06-17
        • 2010-11-17
        • 1970-01-01
        相关资源
        最近更新 更多