ajax脚本警报jquery

时间:2016-10-03 06:52:08

标签: javascript jquery

我创建了静态Web方法,然后我尝试将其调用为像这样的脚本

更新脚本<​​/ strong>

<script type="text/javascript">
    debugger;
    alert("1");
    $(function () {
        $.ajax({
            type: "GET",
            url: "Maintenance.aspx/data_call",
            //data: "",
            contentType: "application/json;charset=utf-8",
            dataType: "json",
            async: true,
            cache: false,
            success: function (result) {
                alert("12");
                debugger;
                var re = JSON.parse(result.d).response;
                debugger;

                console.log(JSON.parse(result.d).response);
                debugger;
            },
            error: function (error) {
                alert(Error);
            }
        });
    });
</script>

更新

 [WebMethod]
 public static string data_call()
    {
        string result="";
        Data td=new Data();
        List<spselect_data_Result> selectdata=td.spselect_data().ToList();
        DataTable dt=new DataTable();
        dt.Columns.Add("RegionID",typeof(int));
        dt.Columns.Add("Region",typeof(string));
        dt.Columns.Add("StartDate",typeof(DateTime));
        dt.Columns.Add("EndDate",typeof(DateTime));

        foreach(var add in selectdata)
        {
            dt.Rows.Add(add.RegionID,add.Region,add.StartDate,add.EndDate);
        }
        result=DataSetToJSON(dt);
        return result;
    }


      public static string DataSetToJSON(DataTable dt)
    {

        Dictionary<string, object> dict = new Dictionary<string, object>();

        object[] arr = new object[dt.Rows.Count + 1];

        for (int i = 0; i <= dt.Rows.Count - 1; i++)
        {
            arr[i] = dt.Rows[i].ItemArray;
        }

       // dict.Add(dt.TableName, arr);
        dict.Add("response", arr);

        JavaScriptSerializer json = new JavaScriptSerializer();
        return json.Serialize(dict);                               
    }

protected void Page_Load(object sender, EventArgs e)
        {
           // data();
        }

当我调试代码然后像这样的警报显示

function Error (){[native code]}

当我在jquery上设置调试器并检查然后调试器出现在警报1然后在这一行$(function(){然后在此行上直接执行意味着ajax不调用

首先我尝试在控制台上显示数据

控制台上出现

错误 无法加载资源:服务器响应状态为500(内部服务器错误)

当我尝试此操作时,通话仅显示alert("1")alert("12")未被调用。问题在哪里?

2 个答案:

答案 0 :(得分:0)

此问题可能是由web.config文件中的maxJsonLength属性引起的。解决问题您可以在web.config上输入MaxJsonLength属性:

<configuration> 
   <system.web.extensions>
       <scripting>
           <webServices>
               <jsonSerialization maxJsonLength="50000000"/>
           </webServices>
       </scripting>
   </system.web.extensions>
</configuration>  

MaxJsonLength属性是一个整数属性,默认设置为102400(100k),不能无限制。

答案 1 :(得分:0)

我发现您发布的代码存在一些问题。

首先,您不需要type: "POST",因为您没有发布/发送任何数据。

因此在ajax请求中更新该部分。

$(function() {
        $.ajax({
            type: "GET",
            url: "Maintenance.aspx/YourMethod",           
            contentType: "application/json;charset=utf-8",
            dataType: "json",  
            success: function (result) {
                alert("12");
                debugger;                 
            },
            error: function (error) {
                alert(Error);
            }
        });
});

要用帖子来处理它,你必须设置

data: "{}",

请参阅ajax请求中的cache:false设置,而不是像

这样的常见位置设置它
$(document).ready(function() {
  $.ajaxSetup({ cache: false });
});

接下来在服务器端,无需在页面加载中调用方法data

只需在课外页面加载中直接编写它。并从WebMethod添加属性System.web.services

[WebMethod]
public static string YourMethod()
{
return "whatever you want";    
}

注意:另外我注意到你的方法名称为data,所以我的建议是把它改成有意义的东西,因为数据是一个ajax调用参数键,它可以冲突。