我需要提交一个简单的表单并验证模型。如果模型有效,我想序列化该模型并通过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