jquery - 使用webservice获取数据时无法获取json结果

标签 jquery ajax web-services

我需要使用网络服务显示客户表中的 ID,但我无法使用 belove 代码获取它。

在浏览器控制台中获取响应。 get json result

这是我的 ajax 调用来获取或显示整个结果,但它无法获取客户 ID

     $(document).ready(function () {
                var values;
                $.ajax({
                    url: 'http://localhost:53562/WebService.asmx/HelloWorld',                
                    type: 'POST',               
                    success: function (data) {
                        alert("ajax call");
                        //$.map(data, function (product) {
                        //    alert(product.Id);
                        //    $('<tr> <td>' + product.Name + '</td> <td>' + product.ProductNumber + ' </td> <td>' + product.SafetyStockLevel + ' </td> <td>' + product.ReorderPoint + ' </td></tr>').appendTo(".tblData");
                        //});
                        //for (var i in data) {
                        //    alert(data[i]);
                        //    // data[i].something, etc
                        //}
                        //var datas=data.par                   
                        $.each(data, function (index, item) {
                            alert(item);
                        });
                    }
                  
                });
            });

This is my webservice code to get customer id from database and convert result to json and return this result to json call.
<div class="snippet" data-lang="js" data-hide="false" data-console="false" data-babel="false">
<div class="snippet-code">
<pre class="snippet-code-html lang-html prettyprint-override"><code>    [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string HelloWorld()
        {
            // getting connection string
            string conStr = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["DbConection"].ConnectionString;

            using (SqlConnection conn = new SqlConnection(conStr))
            {
                DataTable dt = new DataTable();
                SqlCommand cmd = new SqlCommand("select Id from customer", conn);
                conn.Open();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dt);
                System.Web.Script.Serialization.JavaScriptSerializer serilizer = new System.Web.Script.Serialization.JavaScriptSerializer();
                List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
                Dictionary<string, object> row;
                foreach(DataRow dr in dt.Rows)
                {
                    row = new Dictionary<string, object>();
                    foreach(DataColumn col in dt.Columns)
                    {
                        row.Add(col.ColumnName,dr[col]);                
                    }
                    rows.Add(row);                
                }
                return serilizer.Serialize(rows);   
            }      </code></pre>
</div>
</div>

最佳答案

来自 MSDN 文档:

Serialize(Object) : Converts an object to a JSON string.

这似乎是一个 json 字符串,而不是有效的 json,因此在这种情况下,您必须在循环响应中的每个对象之前解析它:

var resp = JSON.parse(data); // converts a json string to a valid json object
$.each(resp, function (index, item) { // use var resp in here 
    alert(item.id);
});

关于jquery - 使用webservice获取数据时无法获取json结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32203804/

相关文章:

java - 无法找到命名空间 http ://www. 的 NamespaceHandler mulesoft.org/schema/mule/jersey

c# - 如何将 C# 代码值访问到 javascript 中?

jquery - Intellisense 不适用于 Visual Studio 2012 中的 JavaScript

javascript - 如何根据 JQuery 选择的另一个选项隐藏\显示选项的特定值?

jquery - 在 iframe 上隐藏引荐来源网址

javascript - 在.js文件中调用ajax

php - 如何自动填充文本框取决于从下拉列表中选择选项

php - Jquery AJAX 发布到 PHP

web-services - IE10无法显示页面,其他浏览器可以

web-services - RESTful 服务中的自定义操作