0

我的网络服务中有一个数据表,它是这样的

 [WebMethod]
        [ScriptMethod]
        public DataTable mydbCon()
            {
SqlConnection SqlCon = new SqlConnection(@"Data Source=myds;Initial Catalog=name;Persist Security Info=True;User ID=sa;Password=pwd");
                SqlCon.Open();
                SqlCommand SqlComm = new SqlCommand();
                SqlComm.Connection = SqlCon;
                SqlComm.CommandType = CommandType.Text;
                SqlComm.CommandText = "select password from tbl_login where username='aby';";
                DataTable EmployeeDt = new DataTable("tbl_login");
                SqlDataAdapter SqlDa = new SqlDataAdapter(SqlComm);
                SqlDa.Fill(EmployeeDt);
                return EmployeeDt;
            }

我在我的 HTML 页面中有一个 Ajax 调用,它是这样的,我没有得到一个显示错误消息的值

<script type="text/javascript">
       function GetAge() {
           jQuery.support.cors = true;
           $.ajax({
               type: "POST",
               contentType: "application/json; charset=utf-8",
               dataType: "json",
               jsonp: 'jsonp_callback',
               async: false,
               url: "http://localhost:50113/Service1.asmx/mydbCon",
               data: "{}",
               success: function (msg) {
                    $('#divToBeWorkedOn').html(msg.d);
                },
               error: function (e) {
                   $('#divToBeWorkedOn').html("unavailable");
               }
           });
       }
      </script> 
4

2 回答 2

1

从jQuery 文档中提取:“json”:将响应评估为 JSON 并返回一个 JavaScript 对象。在 jQuery 1.4 中,JSON 数据以严格的方式解析;任何格式错误的 JSON 都会被拒绝并引发解析错误。(有关正确的 JSON 格式的更多信息,请参阅 json.org。)

因此,如果您的 web 服务没有以正确的 JSON 格式响应,则会执行错误案例。

所以这里有两个解决方案:

  1. 正如sQve所建议的,只需尝试将 [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 添加到 JSON 格式的响应中。

  2. 更改您的 javascript 代码以接受直接数据并仅从您的网络服务返回“msg.d”数据:

    <script type="text/javascript">
        function GetAge() {
            jQuery.support.cors = true;
            $.ajax({
                type: "POST",
                async: false,
                url: "http://localhost:50113/Service1.asmx/mydbCon",
                success: function (msg) {
                    $('#divToBeWorkedOn').html(msg);
                },
                error: function (e) {
                    $('#divToBeWorkedOn').html("unavailable");
                }
          });
      }
      </script> 
    

如果您只使用一个属性,为什么要发布包含许多数据的完整 JSON 对象(序列化和反序列化)?让它简单:)

于 2012-08-21T12:40:28.257 回答
0

最后我找到了你需要在'msg'行之后添加'.text'的答案 $('#divToBeWorkedOn').html(msg.text);

<script type="text/javascript">
     function GetAge() {
         jQuery.support.cors = true;
         $.ajax({
             type: "POST",
             async: false,
             url: 'http://localhost:50113/Service1.asmx/mydbCon?wsdl',
             success: function (msg) {
                   $('#divToBeWorkedOn').html(msg.text); 

             },
             error: function (e) {
                 $('#divToBeWorkedOn').html("unavailable");
             }
         });
     } 
  </script>   

感谢 palmpalm、Yuriy 和其他所有人的支持

于 2012-08-22T05:48:45.970 回答