我需要提交一个简单的表单并验证模型。如果模型有效,我想序列化该模型并使用自定义标头通过 POST 将其发送到外部(https)Web 服务。最后,我将处理从请求中得到的响应并显示适当的消息。
我正在完美地验证来自控制器的模型并序列化对象,但似乎无法找到一种方法来创建对外部 URI 的 JSON 发布请求。有没有办法使用 JQuery.ajax 或 $.post 来做到这一点。也许我错过了一个关键的 ajax 参数来实现这一点。
谢谢
我需要提交一个简单的表单并验证模型。如果模型有效,我想序列化该模型并使用自定义标头通过 POST 将其发送到外部(https)Web 服务。最后,我将处理从请求中得到的响应并显示适当的消息。
我正在完美地验证来自控制器的模型并序列化对象,但似乎无法找到一种方法来创建对外部 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);
},
});
}
尝试这个
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 会按原样接受它。