2017-07-07 13 views
1

功能:

$.post("/SurveyResult.aspx", { 
    test: 'testing', 
}).done(function (data) { 
    alert("Data Updated"); 
}); 

服務器端的:

protected void Page_Load(object sender, EventArgs e) 
{  
    var formValue = Request.Form["test"]; 
} 

功能是發佈好但我在服務器端得到測試的空值。不知道問題是什麼。

回答

1

您將需要在服務器端接收此ajax調用的Web方法,它不能在頁面加載完成,因爲這應該是ajax調用而不是整個頁面刷新。

要了解更多關於Web方法:
Using jQuery for AJAX with ASP.NET Webforms
Calling a webmethod with jquery in asp.net webforms

而且我個人用在asp.net形式使用與阿賈克斯,而不是頁面的方法服務:https://channel9.msdn.com/Blogs/ASP-NET-Site-Videos/how-do-i-make-ajax-calls-using-jquery

+0

我從不同的表單發佈到'SurveyResult.aspx'。所以可以在頁面加載中完成。我一直在做其他的應用程序,但不知道爲什麼沒有得到任何數據] –

+0

啊哈,這是不同的,那麼你有沒有嘗試得到而不是後? –

0

您將需要標記在aspx代碼背後的方法作爲webmethod並在發佈時指定相同。在客戶端上,您需要進行以下更改:

$.post("/SurveyResult.aspx/OnSubmit", { 
test: 'testing', 
}).done(function (data) { 
alert("Data Updated"); 
}); 

另外,在您的代碼隱藏中,您將需要公開要調用的方法來處理帖子。

[WebMethod] 
public static string OnSubmit(string test) 
{ 
    var value = test; 

} 
0

您目前不是在發佈表單編碼數據而是json字符串。如果你想保留aspx作爲終點,並使用Form集合訪問變量,那麼你必須將你的ajax調用改爲發佈表單編碼數據,並在http調用的頭部指定。

$.post({ 
    url: "/SurveyResult.aspx", 
    data: $.param({test: 'testing'}), 
    headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
}).done(function (data) { 
    alert("Data Updated"); 
}); 

param這使得傳遞/變換對象作爲請求數據更容易一些寫的一部分見。你也可以用這個硬編碼的字符串替換它。

data: "test=testing",