2

我需要提交一个简单的表单并验证模型。如果模型有效,我想序列化该模型并使用自定义标头通过 POST 将其发送到外部(https)Web 服务。最后,我将处理从请求中得到的响应并显示适当的消息。

我正在完美地验证来自控制器的模型并序列化对象,但似乎无法找到一种方法来创建对外部 URI 的 JSON 发布请求。有没有办法使用 JQuery.ajax 或 $.post 来做到这一点。也许我错过了一个关键的 ajax 参数来实现这一点。

谢谢

4

2 回答 2

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);
        },
    });
}
于 2013-04-22T14:09:01.427 回答
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 会按原样接受它。

于 2013-04-22T01:45:51.033 回答