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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

我正在使用上面的方法,并且它在URL中的一个参数中运行良好。

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

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

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

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

重点是用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方法从你的表单中为POST创建数据。

var dataToBeSent = $("form").serialize();
用户回答回答于

这是我的“单线”解决方案:

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

我做了一些跨域测试,似乎可行。尽管如此,仍然需要更多测试

扫码关注云+社区