我需要提交一個簡單的表單並驗證模型。如果模型有效,我想序列化該模型並通過POST將其發送到使用自定義標頭的外部(https)Web服務。最後,我會處理從請求中取回的響應並顯示相應的消息。MVC4模型驗證然後使用JQuery將JSON發佈提交給外部URI
我從控制器完美地驗證模型並序列化對象,但似乎無法找到創建到外部URI的JSON發佈請求的方式。有沒有辦法使用JQuery.ajax或$ .post來做到這一點。也許我錯過了一個關鍵的ajax參數來實現這一點。
感謝
我需要提交一個簡單的表單並驗證模型。如果模型有效,我想序列化該模型並通過POST將其發送到使用自定義標頭的外部(https)Web服務。最後,我會處理從請求中取回的響應並顯示相應的消息。MVC4模型驗證然後使用JQuery將JSON發佈提交給外部URI
我從控制器完美地驗證模型並序列化對象,但似乎無法找到創建到外部URI的JSON發佈請求的方式。有沒有辦法使用JQuery.ajax或$ .post來做到這一點。也許我錯過了一個關鍵的ajax參數來實現這一點。
感謝
因此,基於澄清這個問題是你可以做什麼:
定義控制器的方法,將驗證對象
public ActionResult TestMethod() {
// do server-side validation
return Json(aValidObject);
}
你做一個AJAX張貼到您的控制器,這樣你就可以驗證你的模型,然後得到一個json結果。
$.ajax({
url: '@Url.Action("TestMethod")',
data: some_data,
type: "post",
success: function (result) {
// result is a valid json object
doExternalPost(result);
}
});
添加自定義頁眉和做外部後
function doExternalPost(o) {
$.ajax({
url: 'http://some_external_url',
data: o,
dataType: 'json',
beforeSend: function (xhr) {
xhr.setRequestHeader('custom_header', 'some_value');
},
success: function() {
// post is sucessful
},
error: function (xhr, errorType, exception) {
var errorMessage = exception || xhr.statusText || xhr.responseText;
alert('An error has occured: ' + errorMessage);
},
});
}
這「完全」是我所需要的。我試圖從應用程序中提出要求,比要求的要難得多。謝謝!! – Will 2013-04-22 15:04:32
不客氣。 – 2013-04-23 00:41:27
試試這個
var data = {jsonDataObjectHere};
var request = $.ajax({
url : 'externalUrl.com/something.whatever',
type : 'POST',
data : data // see above
});
request.success(function(response){
// the response is the stuff from the server
});
我困了所以請原諒錯別字
好運
編輯:爲一點澄清,與MVC你真的不需要到序列化json對象,mvc會按原樣接受它。
如果已將其傳遞給控制器和模型驗證,得到了,系列化,可您隨後從控制器外部調用?你爲什麼要求ajax方式,這意味着你首先從你的控制器返回結果,然後進行外部呼叫? – 2013-04-22 01:45:53
@von v。我需要知道如何在模型驗證完成後使用控制器的自定義頭創建請求。應處理響應,並在窗體上顯示相應的消息(失敗/成功)。 – Will 2013-04-22 13:24:12
如果你在你的控制器上做了一個ajax post,驗證這個對象,把它序列化並返回。所以你可以使用它,然後爲你的ajax發佈到外部URL,這是否符合你的要求?如果是的話,那麼你也問在你做外部郵件之前如何包含自定義標題? – 2013-04-22 13:29:02