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

我正在使用上面的方法,它与URL中的一个参数很好地工作。

例如Students/getstud/1 ,其中应用控制器/动作/参数格式。

现在我在学生控制器中有一个操作,它接受两个参数并返回一个JSON对象。

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

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

重点是用AJAX调用控制器的动作。

$ .getJSON()方法执行HTTP GET,而不是POST。 你需要使用$ .post()

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

在这个调用中, dataToBeSent可以是你想要的任何东西,但是如果发送一个html表单的内容,你可以使用serialize方法从你的表单创buildPOST的数据。

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

这是我的“单线”解决scheme:

 $.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); }); 

服务器必须准备好处理callbackGET参数并返回jsonstring:

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

其中“jsonp000000”是callbackGET值。

在PHP中,实现将如下所示:

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

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

我有做getJSON的代码。 我简单地用后置换它。 令我惊讶的是,它的工作

  $.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 } 

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

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

$.getJSONreplace(一些/所有) $.getJSON ,并享受!

您可以使用与$.getJSON相同的Javascriptcallback函数。 不需要服务器端更改。 (嗯,我总是build议在PHP中使用$_REQUEST , 其中$ _REQUEST,$ _GET和$ _POST哪一个是最快的?

这比@ lepe的解决scheme更简单。

$.getJSON()对于发送AJAX请求并获取JSON数据作为响应非常方便。 唉,jQuery文档缺less一个应该命名为$.postJSON()的姊妹函数。 为什么不使用$.getJSON()并完成它? 那么,也许你想要发送大量的数据,或者,在我的情况下,IE7只是不希望与GET请求正常工作。

确实,目前没有$.postJSON()方法,但可以通过在$.post()函数中指定第四个参数(types)来完成相同的操作:

我的代码看起来像这样:

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

我只是用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!"); }); 

再次,你可以这样做:

 $.getJSON('/url-you-are-posting-to/'+param1+ '/'+ param2,null,function(result){ //do something useful with returned result// result.variable-in-result; // result is json structure returned// }); 

这可能不那么优雅

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

 $.getJSON('/url-you-are-posting-to',data,function(result){ //do something useful with returned result// result.variable-in-result; });