日期:2014-05-17  浏览次数:20436 次

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