如何使用 getJSON,使用 post 方法发送数据?

我正在使用上述方法,它与一个参数在 URL 工作得很好。

例如应用控制器/动作/参数格式的 Students/getstud/1

Now I have an action in Students controller that accepts two parameters and return a JSON object.

那么如何使用 post 方法发布 $.getJSON()中的数据呢?

类似的方法也是可以接受的。

关键是使用 AJAX 调用控制器的操作。

195124 次浏览

GetJSON ()方法执行 HTTP GET 而不是 POST

$.post(url, dataToBeSent, function(data, textStatus) {
//data contains the JSON object
//textStatus contains the status: success, error, etc
}, "json");

在这个调用中,dataToBeSent可以是您想要的任何内容,但是如果要发送 html 表单的内容,则可以使用 serialize方法从表单中为 POST 创建数据。

var dataToBeSent = $("form").serialize();

如果你只有两个参数,你可以这样做:

$.getJSON('/url-you-are-posting-to',data,function(result){


//do something useful with returned result//
result.variable-in-result;
});

This is my "one-line" solution:

$.postJSON = function(url, data, func) { $.post(url+(url.indexOf("?") == -1 ? "?" : "&")+"callback=?", data, func, "json"); }

为了使用 jsonp 和 POST 方法,该函数将“ callback”GET 参数添加到 URL 中。这就是使用它的方法:

$.postJSON("http://example.com/json.php",{ id : 287 }, function (data) {
console.log(data.name);
});

服务器必须准备好处理回调 GET 参数并按如下方式返回 json 字符串:

jsonp000000 ({"name":"John", "age": 25});

其中“ jsonp000000”是回调 GET 值。

在 PHP 中,实现如下:

print_r($_GET['callback']."(".json_encode($myarr).");");

我做了一些跨域测试,它似乎工作。但仍然需要更多的测试。

我的代码正在执行 getJSON。我只是用 post 替换了它。令我惊讶的是,它工作了

   $.post("@Url.Action("Command")", { id: id, xml: xml })
.done(function (response) {
// stuff
})
.fail(function (jqxhr, textStatus, error) {
// stuff
});






[HttpPost]
public JsonResult Command(int id, string xml)
{
// stuff
}

$.getJSON()对于发送 AJAX 请求和返回作为响应的 JSON 数据非常方便。遗憾的是,jQuery 文档缺少一个应该命名为 $.postJSON()的姊妹函数。为什么不直接使用 $.getJSON()来完成呢?嗯,也许您想发送大量数据,或者,在我的例子中,IE7只是不想正确地处理 GET 请求。

的确,目前还没有 $.postJSON()方法,但是您可以通过在 $.post()函数中指定第四个参数(类型)来完成同样的事情:

我的代码是这样的:

$.post('script.php', data, function(response) {
// Do something with the request
}, 'json');

只需将这些代码行添加到 <script>中(在加载 jQuery 之后,但在发布任何内容之前) :

$.postJSON = function(url, data, func)
{
$.post(url, data, func, 'json');
}

$.postJSON代替(部分/全部) $.getJSON,尽情享受吧!

您可以使用与 $.getJSON相同的 Javascript 回调函数。 不需要对服务器端进行更改(我总是推荐在 PHP 中使用 $_REQUEST

这比@lepe 的解决方案更简单。

我只用了 post 和 if:

data = getDataObjectByForm(form);
var jqxhr = $.post(url, data, function(){}, 'json')
.done(function (response) {
if (response instanceof Object)
var json = response;
else
var json = $.parseJSON(response);
// console.log(response);
// console.log(json);
jsonToDom(json);
if (json.reload != undefined && json.reload)
location.reload();
$("body").delay(1000).css("cursor", "default");
})
.fail(function (jqxhr, textStatus, error) {
var err = textStatus + ", " + error;
console.log("Request Failed: " + err);
alert("Fehler!");
});