簡體   English   中英

ajax 腳本警報 jquery

[英]ajax script alert jquery

我創建了靜態 Web 方法,然后我嘗試將其調用到這樣的腳本中

更新腳本

<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")沒有被調用。 問題出在哪兒?

此問題可能是由 web.config 文件中的 maxJsonLength 屬性引起的。 要解決此問題,您可以更改 web.config 上的 MaxJsonLength 屬性:

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

MaxJsonLength 屬性是一個整數屬性,默認設置為 102400(100k) 並且不能是無限的。

我在您發布的代碼中看到了一些問題。

首先,您不需要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

直接在頁面加載之外的類中編寫即可。並從System.web.services添加屬性WebMethod

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

注意:還有一件事我注意到您將方法名稱設為data ,因此我的建議是將其更改為有意義的內容,因為 data 是一個 ajax 調用參數鍵,並且可能會發生沖突。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM