2012-10-10 128 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編碼的字符串