如何使用getJSON方法以POST方式发送数据?
如何使用getJSON方法以POST方式发送数据?
我正在使用上述方法,当URL中只有一个参数时它可以很好地工作。
例如:Students/getstud/1
,这里应用了控制器/动作/参数的格式。
现在我有一个在Students控制器中接受两个参数并返回JSON对象的动作。
那么,我该如何使用post方法用$.getJSON()
提交数据?
类似的方法也可以接受。
重点是通过AJAX调用控制器的动作。
admin 更改状态以发布 2023年5月23日
这是我的“一行”解决方案:
$.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() 方法执行的是HTTP GET而不是POST。您需要使用$.post()。
$.post(url, dataToBeSent, function(data, textStatus) { //data contains the JSON object //textStatus contains the status: success, error, etc }, "json");
在那个调用中,dataToBeSent
可以是任何你想要的东西,尽管如果你要发送一个表单的内容,你可以使用serialize方法从你的表单中创建POST数据。
var dataToBeSent = $("form").serialize();