2013-04-22 16 views
2

我需要提交一個簡單的表單並驗證模型。如果模型有效,我想序列化該模型並通過POST將其發送到使用自定義標頭的外部(https)Web服務。最後,我會處理從請求中取回的響應並顯示相應的消息。MVC4模型驗證然後使用JQuery將JSON發佈提交給外部URI

我從控制器完美地驗證模型並序列化對象,但似乎無法找到創建到外部URI的JSON發佈請求的方式。有沒有辦法使用JQuery.ajax或$ .post來做到這一點。也許我錯過了一個關鍵的ajax參數來實現這一點。

感謝

+0

如果已將其傳遞給控制器​​和模型驗證,得到了,系列化,可您隨後從控制器外部調用?你爲什麼要求ajax方式,這意味着你首先從你的控制器返回結果,然後進行外部呼叫? – 2013-04-22 01:45:53

+0

@von v。我需要知道如何在模型驗證完成後使用控制器的自定義頭創建請求。應處理響應,並在窗體上顯示相應的消息(失敗/成功)。 – Will 2013-04-22 13:24:12

+0

如果你在你的控制器上做了一個ajax post,驗證這個對象,把它序列化並返回。所以你可以使用它,然後爲你的ajax發佈到外部URL,這是否符合你的要求?如果是的話,那麼你也問在你做外部郵件之前如何包含自定義標題? – 2013-04-22 13:29:02

回答

2

因此,基於澄清這個問題是你可以做什麼:

定義控制器的方法,將驗證對象

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); 
     }, 
    }); 
} 
+0

這「完全」是我所需要的。我試圖從應用程序中提出要求,比要求的要難得多。謝謝!! – Will 2013-04-22 15:04:32

+0

不客氣。 – 2013-04-23 00:41:27

1

試試這個

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會按原樣接受它。