当前位置: 代码迷 >> ASP.NET >> jquery AJAX返回的有关问题
  详细解决方案

jquery AJAX返回的有关问题

热度:5801   发布时间:2013-02-25 00:00:00.0
jquery AJAX返回的问题
<script type="text/javascript">
  $(function () {
  $("#selPro").change(function () { //省份下拉菜单的change事件
  var params = '{str:"' + $(this).val() + '"}'; //此处参数名要注意和后台方法参数名要一致  
  alert(params);
  alert("执行了");
  $.ajax({
  type: "POST", //提交方式
  url: "test1.aspx/ShowCity", //提交的页面/方法名
  data: params, //参数(如果没有参数:null)
  dataType: "text", //类型
  contentType: "application/json; charset=utf-8",
  success: function (msg) {
  $('#tipsDiv').text("查询成功!");
  $("#selCity option").each(function () {
  $(this).remove(); //移除原有项
  });
  $("<option value='0'>===请选择===</option>").appendTo("#selCity"); //添加一个默认项
  $(eval("(" + msg + ")").d).appendTo("#selCity"); //将返回来的项添加到下拉菜单中
  },
  error: function (xhr, msg, e) {
  alert(msg);
  }
  });
  });
  });
  </script>




test1.aspx 是本页面 进入 ajax里面 就会直接alert(error) 方法体内我看了很久 看不出什么问题 请大家帮忙解决下

------解决方案--------------------------------------------------------
用firedebug看看,或者IE本身也有调试,看里面具体报错的代码还有innerExce是什么。ajax开发必须要掌握浏览器调试,不然很多返回的问题都不好排查。
------解决方案--------------------------------------------------------
参数名称要一致

给你个完整的例子

HTML code
jQuery Ajax 调用后台方法返回 DataSet 或者 DataTable 的例子直接拷贝源代码粘贴成aspx文件即可运行看效果。ASPX 代码<%@ Page Language="C#" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">  /// <summary>  /// param1 param2 对应前面js传递来的参数。  /// </summary>  /// <param name="param1"></param>  /// <param name="param2"></param>  /// <returns></returns>  [System.Web.Services.WebMethod]  public static string GetDataTable(String param1, String param2)  {    return DataTable2Json(CreateDataTable(param1, param2));  }  public static System.Data.DataTable CreateDataTable(String param1, String param2)  {    System.Data.DataTable dataTable1 = new System.Data.DataTable("BlogUser");    System.Data.DataRow dr;    dataTable1.Columns.Add(new System.Data.DataColumn("UserId", typeof(System.Int32)));    dataTable1.Columns.Add(new System.Data.DataColumn("UserName", typeof(System.String)));    dataTable1.PrimaryKey = new System.Data.DataColumn[] { dataTable1.Columns["UserId"] };    for (int i = 0; i < 8; i++)    {      dr = dataTable1.NewRow();      dr[0] = i;      dr[1] = "【孟子E章】" + i.ToString() + " 前端传递的参数的值分别是:" + param1 + ", " + param2;      dataTable1.Rows.Add(dr);    }    return dataTable1;  }  public static string DataTable2Json(System.Data.DataTable dt)  {    StringBuilder jsonBuilder = new StringBuilder();    jsonBuilder.Append("{\"");    jsonBuilder.Append(dt.TableName.ToString());    jsonBuilder.Append("\":[");    for (int i = 0; i < dt.Rows.Count; i++)    {      jsonBuilder.Append("{");      for (int j = 0; j < dt.Columns.Count; j++)      {        jsonBuilder.Append("\"");        jsonBuilder.Append(dt.Columns[j].ColumnName);        jsonBuilder.Append("\":\"");        jsonBuilder.Append(dt.Rows[i][j].ToString());        jsonBuilder.Append("\",");      }      jsonBuilder.Remove(jsonBuilder.Length - 1, 1);      jsonBuilder.Append("},");    }    jsonBuilder.Remove(jsonBuilder.Length - 1, 1);    jsonBuilder.Append("]");    jsonBuilder.Append("}");    return jsonBuilder.ToString();  }  </script><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">  <title>jQuery Ajax 调用后台方法返回 DataSet 或者 DataTable 的例子</title>  <script type="text/javascript" src="jquery-1.6.2.min.js"></script></head><body>  <form id="form1" runat="server">  <div id="result"></div>  </form>  <script type="text/javascript">    $(document).ready(function () {      $.ajax({        type: "POST",        url: "<%=Request.Url.ToString() %>/GetDataTable",  /* 注意后面的名字对应CS的方法名称 */        data: "{\"param1\":\"8888\",\"param2\":\"参数2\"}", /* 注意参数的格式和名称 */        contentType: "application/json; charset=utf-8",        dataType: "json",        success: function (result) {          data = jQuery.parseJSON(result.d);  /*这里是否解析要看后台返回的数据格式,如果不返回表名则无需要 parseJSON */          t = "<table border='1'>";          $.each(data.BlogUser, function (i, item) { /* BlogUser是返回的表名 */            t += "<tr>";            t += "<td>" + item.UserId + "</td>";            t += "<td>" + item.UserName + "</td>";            t += "</tr>";          })          t += "</table>";          $("#result")(t);        }      });    });        </script></body></html>
  相关解决方案