2016-10-03 3 views
-1

Я создаю статический веб-метод, а затем я пытаюсь вызвать это в сценарий, как этотАякса бдительный скрипт 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

Эта проблема может быть вызвана свойством maxJsonLength в файле web.config. Для того, чтобы решить эту проблему Вы можете chnage свойство MaxJsonLength на вашем web.config:

<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: "{}", 

См вместо установки cache:false в запросе Ajax установить его из общего места, как

$(document).ready(function() { 
    $.ajaxSetup({ cache: false }); 
}); 

Следующая на стороне сервера не нужно вызывать метод data при загрузке страницы.

Просто напишите его непосредственно в классе за пределами загрузки страницы. И добавьте атрибут WebMethod от System.web.services.

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

Примечание: Также еще одна вещь, я заметил, что вы сделали ваше имя метода, как data, поэтому мой совет изменить его на что-то значимое в данных является ключевым параметром Ajax вызова и может конфликтовать.

+0

Я сказал вам, чтобы вы не вызывали метод из page_load, и вы вызываете data_call из ajax, а на сервере это все еще данные. Читайте о pagemethods first –

+0

no i mean me just post script Я сделал это с моим кодом уже но все же показать ошибку также я фиксирую на загрузке страницы и изменить имя также –

+0

любое решение? @Neel –

Смежные вопросы