如何在JQuery中读取webservice返回的XML数据

时间:2011-02-28 07:56:18

标签: jquery xml ajax web-services

ASMX:

    public class ItemRecord
    {
        public string model { get;set; }
        public string verzia { get;set; }
        public string typ { get;set; }
        public string motor { get;set; }
    }

    [WebMethod]
    public ItemRecord GetRecord(int id)
    {
        ItemRecord record = new ItemRecord();

        using (SqlConnection sConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["bazarovkyConnectionString"].ToString()))
        {
            sConnection.Open();


            SqlCommand sCommand = sConnection.CreateCommand();
            sCommand.CommandText = "select id_model, motor from data_motorizacia where id=@id";
            sCommand.Parameters.AddWithValue("@id", id);

            SqlDataReader sReader = sCommand.ExecuteReader();
            if (sReader.Read())
            {
                record.model = sReader["id_model"].ToString();
                record.motor = sReader["motor"].ToString();
            }
        }

        return record;

    }

JQUERY:

id = $("#view_id", row).text();

$.ajax({
    type: "POST",
    url: "/data.asmx/GetRecord",
    data: "{'id':'" + id + "'}",
    contentType: "application/json; charset=utf-8",
    dataType: "xml",
    processData: false,
    error: function (XMLHttpRequest, textStatus, errorThrown) { ajaxError(XMLHttpRequest, textStatus, errorThrown); },
    success: function (xml) { ajaxFinish(xml); }
});

function ajaxFinish(xml) {
    // parse the object
    alert($(xml).find("motor").text());

}

我想要做的是在ajaxFinish中读取motor和id_model的值。但它要么返回对象(如果我只引用XML),要么返回未指定或为空。

如何跟踪/调试从.ASMX文件返回的内容?

2 个答案:

答案 0 :(得分:2)

我没有复制粘贴你的代码,所以它有点不同但你会得到这个想法......

  var arr= new Array();
  var loopCounter = 0;

$.ajax({
            type: "POST",
            url: "yourURL",
            dataType: "xml",
            success: function(xml) {
                $(xml).find('xmlNode').each(function() {
                    arr[loopCounter] = $(this).find('xmlNode').text();
                    loopCounter += 1;
                });

这里arr是读取值的数组,loopCounter用于存储数组arr中的数据,xmlNode是xml中的节点名称(你得到的响应),你想得到的值是什么

答案 1 :(得分:1)

您可以尝试使用JSON代替xml