如何使用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'); }
用$.getJSON
replace(一些/所有) $.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; });
- ASP.NET MVC中如何枚举formcollection?
- ActionFilterAttributes是否跨线程重用? 这是如何工作的?
- System.Web.Http.Authorize与System.Web.Mvc.Authorize
- ASP.NET MVC ActionLink和post方法
- 如何创build文件并通过ASP.NET MVC中的FileResult返回?
- MVC Razor HTML助手语法:Html.Hidden对象参数中的Viewbag
- 在entity framework中使用存储过程
- 如何使用ASP.NET MVC 3和Stackoverflow的Markdown
- 简单的ASP.NET MVC CRUD视图在JavaScript UI对话框中打开/closures