[英]Ajax query string not being posted to ASP.NET controller
我有這個Ajax函數:
UpdateFIConfig: function ($appForm) {
var valid = $appForm.valid();
//if not valid the validate plugin will take care of the errors
if (valid) {
$appForm.serialize();
$.ajax({
url: '/IdentifiConfig/DefaultConfiguration/UpdateFIConfig',
data: $appForm,
dataType: 'application/json',
cache: false,
type: 'POST',
success: function (data) {
if (data.Error) {
cc.jqUtils.openDialog(data.ErrorDescription, 'Error', 'OK', null, null, null);
} else {
window.location.href = '/IdentifiConfig/DefaultConfiguration';
}
}
});
}
},
將從我的視圖發送的數據序列化為查詢字符串。 我知道數據是正確序列化的,因為我用console.log($appForm)
查看了字符串,這是正確的。
但是,我的控制器永遠不會收到查詢字符串。 我刪除了很多代碼,但這基本上就是控制器函數的樣子:
[HttpPost]
public ActionResult UpdateFIConfig(string query)
{
NameValueCollection nvc = HttpUtility.ParseQueryString(query);
System.Diagnostics.Debug.WriteLine(nvc);
}
我在行上收到一個空指針,試圖解析查詢字符串,我不知道為什么。 有幫助嗎?
我在我的項目中有同樣的事情ajax唯一不同的是我不使用dataType而是contentType:“application / json; charset = utf-8”
data: "{'query' : '" + $appForm + "'}"
這一點:
$appForm.serialize();
返回您從未使用過的string
。 serialize
實際上不會修改表單。 你應該將它分配給一個變量並改為傳遞它:
var data = $appForm.serialize();
$.ajax({
url: '/IdentifiConfig/DefaultConfiguration/UpdateFIConfig',
data: data,
/* etc */
});
可能有更好的方法,但我通過接受帶有字符串屬性的Object而不僅僅是字符串來解決這個煩惱。 所以做以下事情:
[HttpPost]
public ActionResult UpdateFIConfig(MyTypeWithQry query)
{ ...
和
$.ajax({ url: '/IdentifiConfig/DefaultConfiguration/UpdateFIConfig',
data: { 'query' : $appForm },
dataType: 'application/json',
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.