How to use getJSON, sending data with post method?
我正在使用上面的方法,它适用于URL中的一个参数。
例如
现在我在Students控制器中有一个动作,它接受两个参数并返回一个JSON对象。
那么如何使用post方法使用
类似的方法也是可以接受的
关键是用AJAX调用控制器的动作。
$ .getJSON()方法执行HTTP GET而不执行POST。你需要使用$ .post()
1 2 3 4 | $.post(url, dataToBeSent, function(data, textStatus) { //data contains the JSON object //textStatus contains the status: success, error, etc },"json"); |
在该调用中,
1 | var dataToBeSent = $("form").serialize(); |
这是我的"一线"解决方案:
1 | $.postJSON = function(url, data, func) { $.post(url+(url.indexOf("?") == -1 ?"?" :"&")+"callback=?", data, func,"json"); } |
为了使用jsonp和POST方法,此函数将"回调"GET参数添加到URL。这是使用它的方法:
1 2 3 | $.postJSON("http://example.com/json.php",{ id : 287 }, function (data) { console.log(data.name); }); |
服务器必须准备好处理回调GET参数并返回json字符串:
1 | jsonp000000 ({"name":"John","age": 25}); |
其中"jsonp000000"是回调GET值。
在PHP中,实现如下:
1 | print_r($_GET['callback']."(".json_encode($myarr).");"); |
我做了一些跨域测试,似乎工作。仍需要更多测试。
只需将这些行添加到
1 2 3 4 | $.postJSON = function(url, data, func) { $.post(url, data, func, 'json'); } |
用
您可以使用与
不需要服务器端更改。 (好吧,我总是建议在PHP中使用
这比@ lepe的解决方案简单。
我有代码正在做getJSON。我只是用帖子替换它。令我惊讶的是,它奏效了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $.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 } |
我刚用过post和if:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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!"); }); |
确实,目前没有
我的代码看起来像这样:
1 2 3 | $.post('script.php', data, function(response) { // Do something with the request }, 'json'); |
如果你只有两个参数,你可以这样做:
1 2 3 4 5 | $.getJSON('/url-you-are-posting-to',data,function(result){ //do something useful with returned result// result.variable-in-result; }); |