2011-12-19 89 views
0

我使用下面的調用將數據發送回服務器:ASP.NET AJAX到後面的代碼的函數調用錯誤

$.ajax({ 
    type: "POST", 
    url: "MyTestPage.aspx/UpdateData", 
    data: updates, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (msg) { 
       alert('Success!'); 
    }, 
    error: function (msg) { 
        alert('Failure!'); 
    } 
}); 

後面的代碼看起來像

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.Services; 

namespace TestNamespace 
{ 
    public partial class MyTestPage: System.Web.UI.Page 
    { 
     [WebMethod] 
     public static bool UpdateData(string IDs, string Values) 
     { 
      return true; 
     } 

    } 
} 

從Chrome瀏覽器的要求支付負載,即UI更新變量的值是:{ IDS : "21TOK31" , VALUES : "2TOK2"}

該請求沒有命中後面的代碼,並且由於錯誤,ajax函數總是進入失敗塊。

當沒有數據被傳遞並且函數後面的代碼沒有參數時,請求會觸發函數背後的代碼。

我是在ASP.NET中使用JSON的新手。有人能指導我問題可能是什麼?以及如何最好地解決問題。

+0

一個錯誤我的發現是在函數定義後面的代碼 public static bool UpdateData(字符串ID,字符串值) 參數背後的代碼的名稱應該與JSON對象相同,他應該是: public static bool UpdateData(字符串IDS,字符串值) 它是區分大小寫的,所以人們也必須照顧。我是新的和學校的男孩錯誤。 – user1097553 2011-12-19 18:41:53

回答

1

修改誤差函數是這樣的:

error: function (xhr, err) { alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status + "\nresponseText: " + xhr.responseText); } 

,你會看到確切的錯誤。

個人而言,我只是把斷點在函數內部給我的問題,並在本地運行調試,

+0

非常適合闡述服務器錯誤。 – user1097553 2011-12-19 18:45:23

+0

如果我是你,我只需發送兩個帶有ID的表單字段,然後是值。而不是使用json。將數據更改爲數據:{id:「id string」,values:「values」}。將數據類型更改爲html。然後在你的.net函數中,引用作爲my.request.form(「id」)和my.request.form(「values」)傳遞的值,而不是使用該函數的參數。 – 2011-12-19 18:56:04

0

要解決:

  1. 打開Chrome debugger
  2. 單擊 「網絡」 選項卡
  3. 提交Ajax請求上,你一直在做
  4. 您應該看到請求MyTestPage。 aspx/UpdateData - 點擊它
  5. 在「預覽」選項卡下,您將看到.NET正在返回的錯誤消息

如果您仍然遇到問題,請發佈結果,這會給您帶來真正的錯誤。

+0

這就是我在我的實際請求中得到以下內容: 從Chrome請求付費負載,即UI更新變量的值是:{IDS:「21TOK31」,VALUES:「2TOK2」} – user1097553 2011-12-19 18:46:42

+0

正確 - 我想這就是你證明了請求中發送了什麼。我提供了另一種方式來查看來自服務器的響應,而無需修改代碼。 「預覽」選項卡以您習慣於作爲.NET開發人員的格式顯示.NET服務器錯誤頁面。有時候比警報窗口更容易查看。 – 2011-12-19 23:03:20

0

如果您使用以下,它的工作原理:

var updates = '{"IDs":"21TOK31","Values":"2TOK2"}'; 

也有在配置設置webconfig文件,需要設置,但我做了你的假設,由於你的空返回值工作。

你可能需要的另一件事是一個轉換器,由於該ASP返回數據的格式(在JavaScript的Ajax調用)

converters: { 
    "json jsond": function(msg) 
    { 
     return msg.hasOwnProperty('d') ? msg.d : msg; 
    } 
}, 

和變化:

contentType: "application/json", 
相關問題