2016-10-03 106 views
-1

我創建靜態網頁的方法,然後我嘗試這個叫成這樣的腳本AJAX腳本警報的jQuery

UPDATE SCRIPT

<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> 

UPDATE

代碼

[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,然後在這條線$(功能(報警顯示){然後在此之後直接執行在這條線意味着AJAX不叫

首先,我嘗試在控制檯上顯示的數據

在控制檯上 錯誤無法加載資源:服務器500(內部服務器錯誤)的狀態

W¯¯迴應母雞我試試這個電話只顯示alert("1")。沒有調用alert("12")。哪裏有問題?

+3

您的AJAX請求無法正常工作。檢查控制檯的網絡選項卡。您也可以在您的'Maintenance.aspx/data'網頁方法中放置一個斷點,並逐步找出任何問題 –

+1

您可以在瀏覽器控制檯日誌中顯示錯誤日誌? – HoangHieu

+1

檢查包含正確或不包含的jquery庫... –

回答

0

此問題可能是由web.config文件中的maxJsonLength屬性引起的。爲了解決這個問題,您可以chnage你的web.config中MaxJsonLength屬性:

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

的MaxJsonLength屬性是默認設置爲102400(100K),並不能無限制的整數屬性。

+0

我已經這樣做 –

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

只需將它直接寫入頁面加載的類中即可。並從System.web.services中添加屬性WebMethod

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

注:另外我注意到,你做你的方法名data,另一種東西,所以我的建議是將其更改爲有意義的數據是一個Ajax調用參數鍵,它可能會出現衝突。

+0

我告訴過你不要從page_load調用方法,你也是從ajax調用data_call,在服務器中它仍然是data.Do首先閱讀pagemethods –

+0

不,我的意思是我只是發佈腳本我已經完成了我的代碼已經但仍然顯示錯誤,我也承諾頁面加載和更改名稱也 –

+0

任何解決方案? @Neel –