2012-10-10 88 views
49

好奇,如果有人知道与数据参数有什么不同。

我有一个$.post方法需要一个$('#myform').serialize()作为我的数据参数和工作。

如果我使用$.ajax()方法尝试相同,它不起作用,因为我的数据参数看起来不正确。

有没有人知道区别,我可以用什么来代替上述.serialize

+1

类似http://stackoverflow.com/questions/7528757/post-vs-ajax – Techie

+4

RTFM - http://api.jquery.com/jQuery.post/ –

回答

14

重新阅读一些在线文档后,我决定坚持使用$ .post over $ .ajax。

$ .ajax方法的数据参数与$ .post方法不一样,不确定究竟是什么,但是有区别。

我想要使用$ .ajax的唯一原因是我想能够处理事件,并没有意识到我可以用$ .post来实现。

这里是我结束了

function GetSearchItems() { 
    var url = '@Url.Action("GetShopSearchResults", "Shop", New With {.area = "Shop"})'; 
    var data = $("#ShopPane").serialize(); 
    // Clear container 
    $('#shopResultsContainer').html(''); 
    // Retrieve data from action method 
    var jqxhr = $.post(url, data); 
    // Handle results 
    jqxhr.success(function (result) { 
     //alert("ajax success"); 
     $('#shopResultsContainer').html(result.ViewMarkup); 
    }); 
    jqxhr.error(function() { 
     //alert("ajax error"); 
    }); 
    jqxhr.complete(function() { 
     //alert("ajax complete"); 
    }); 

    // Show results container 
    $("#shopResultsContainer").slideDown('slow'); 
} 
56

此信息对您有所帮助。

Forum Link

总之以下:

$.post("/ajax", {"data" : json }) 

等同于:

$.ajax({ 
    type: "POST", 
    url: "/ajax", 
    data: {"data": json} 
}); 
42

这里的问题是不是事实$.ajax()不工作,那是因为你没有设置Ajax请求中的类型参数,它默认为GET请求。数据通过查询字符串发送以获取,如果您的后端将它们视为后期参数,则不会读取它们。

$.post只是$.ajax(),只是type集。阅读docs,您将看到$.ajax()默认为GET,如上所述。

如果您转到jQuery文档中的jQuery.post页面,它会向您显示具有类型集的$ .ajax请求。再次阅读文档。

10

您是否将此指定为数据参数。 $.post只是$.ajax的缩写,期望以下内容。

$.ajax({ 
    type : 'POST', 
    url : url, 
    data : data, 
    success : success, 
    dataType : dataType 
}); 
-3

$.ajax你能够同步,但它是不可能在$.post功能。同步意味着你可以得到返回的结果。

var tmp; 
$.ajax({ 
    'async': false, 
    'type': "POST", 
    'global': false, 
    'dataType': 'html', 
    'url': "Your Url", 
    'data': {'type': 'data'}, 
    'success': function (data) { 
     tmp = data; 
    } 
}); 
alert(tmp); 
+4

这是不正确的。您可以通过以下方式获得返回的结果: ' $ .post(“your.php”,function(data){_reference ** data ** as your returns result_})' – blurgoon

+0

na这是绝对不正确的信息,不应该有任何upvotes。 $ .ajax,$ .post和$ .get都可以返回结果。 –

+0

@EdDeGagne你不能在post函数之外获得回复响应 – nagaking

2

只是作为补充,在接受的答案,这是mentionned说:“的$就法的数据PARAM做一些事情比$不同。POST方法呢,不知道究竟是什么,但有一个区别

请尝试使用:

{ 
     ... 
     data: JSON.stringify(yourJsonData), 
     ... 
    } 

否则JSON对象获取的插入有效载荷为URL编码的字符串