2010-08-23 32 views
2
$.post('somescript.php', { data: $('#myInputField').val() }, 
    function(replyData) { 

1) 這是$ .post方法的第二個參數 - 在json中?

OR

2) 這是$。員額方法的查詢字符串的第二個參數?

由於提前, MEM

注:如果這個問題沒有意義,請知道爲什麼(它沒有意義),也可以幫助和,被視爲有效答案也是如此。

回答

2

一般來說這兩種方式都在實踐中非常接近。功能$.post$.ajax將以相同的方式編碼發佈的數據。如果你想發佈JSON數據,你應該另外編碼數據與一些JSON編碼器。看到How do I build a JSON object to send to an AJAX WebService?爲例($.post$.ajax短形式,因此,所有與$.ajax和正確描述也爲$.post

$.post('somescript.php', { data: JSON.stringify($('#myInputField').val()) }, ...); 

在上面的代碼我使用JSON.stringifyhttp://www.json.org/js.html

已更新:在評論中提出您的問題後,我希望我能更多地瞭解您想知道的內容。因此,jQuery.post不會爲您的輸入參數(jQuery.post的第二個參數)對您的數據進行任何JSON編碼。所以它始終以相同的方式發送數據。您可以將其他「json」參數(最後一個dataType參數)添加到$.post調用中,但這不會改變數據的編碼方式。

問題「我應該將JSON數據發送到服務器嗎?」是獨立於$.post,你應該回答自己依賴於項目中存在的要求。有時候,這是解決方案架構的問題。有時你必須選擇一種特殊的方式。

以Microsoft ASMX Web Service爲例,存在一些重要的限制。例如,您希望從Web服務提供JSON數據,以便使用JavaScript中的數據輕鬆工作。所以你想在服務器端有一個方法,它有一些輸入參數並返回JSON作爲輸出。在ASMX Web服務的情況下,您必須必須將所有輸入參數作爲JSON編碼數據發送到Web服務方法,以便能夠從Web服務返回JSON數據,但ASMX Web Service爲您解碼/編碼數據,而您不需要在服務器端手動編碼/解碼JSON。

+0

感謝Oleg,但我沒有得到的是這樣的: {data:$('#myInputField')。val()} 是否是json格式?如果是這樣,他們我們正在使用JSON格式的值是嗎?但是,如果是這樣的話,我們就不需要進行串聯化了嗎? :s – MEM 2010-08-23 12:03:23

+0

'$('#myInputField')。val()'是任何數據。 'JSON。stringify($('#myInputField').val())'是一個JSON字符串。將要發佈的數據看起來像'data = blabla',其中'blabla'是JSON字符串,對於encodeURIComponent函數,它可以被編碼一點。在服務器端,你應該得到名稱爲'data'的參數並以相反的方式解碼。 – Oleg 2010-08-23 12:25:02

+0

您應該自行決定是否在某些情況下將JSON數據發佈到服務器或更好。沒有最好的解決方案。一般情況下,如果你想發佈一個複雜的數據對象到服務器或服務器**需要** JSON數據作爲輸入您張貼JSON數據。如果您使用Microsoft ASMX Web服務(請參閱我在答覆中發佈的url),您必須**將JSON數據發佈到服務器,如果您想要JSON回覆。 – Oleg 2010-08-23 12:28:11

相關問題