2016-10-03 111 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 –