2011-12-19 66 views
0

我已經登入,我想通過使用序列AJAX,但像這樣jQuery的序列化錯誤

Array 
(
    [form] => uname=as 
    [upass] => amitpatilasas 
    [action] => login 
) 

格式錯誤的發送數據此HTML發送形式

<form action="#" method="post" name="login" id="login" rel="external" class="ui-corner-all"> 

      <div data-role="fieldcontain"> 
      <input type="text" name="uname" id="uname" value="" placeholder="Username" /> 
      </div> 

      <div data-role="fieldcontain"> 
      <input type="password" name="upass" id="upass" value="" placeholder="Password" /> 
      </div> 

      <div class="ui-body ui-body-b"> 
      <fieldset class="ui-grid-a"> 
        <div class="ui-block-a"><button type="button" id="cancel" data-theme="d">Cancel</button></div> 
        <div class="ui-block-b"><button type="button" id="dologin" data-theme="a">Login</button></div> 
      </fieldset> 
      </div> 

    </form> 

這是的javascrip

$.ajax({ 
     type: "POST", 
     url: "server.php", 
     data: "form="+$("#login").serialize()+"&action=login", 
     success: function(responce){ 

回答

2

刪除"form="+部分。然後它會工作。

$.ajax({ 
     type: "POST", 
     url: "server.php", 
     data: $("#login").serialize()+"&action=login", 
     success: function(responce){ 

至少它會給你這個輸出;

Array 
(
    [uname] => as 
    [upass] => amitpatilasas 
    [action] => login 
) 
+0

嘿Emre,謝謝你......它的工作......我不能相信我怎麼能成爲這麼多的DUMB ...... yi沒有正確地分析它:P –

+0

抱歉不要誤會我的意思......我讀過你的答案首先接受它,評論,然後我看到下一篇文章......我評論說,也接受...我不知道它會刪除第一個「接受」我是新的stackoverflow。 –

+1

沒問題。如果其他答案更令你滿意,你可以接受而不是我的。這是你的選擇。我只是好奇你的理由。 –

0

您的代碼:

"form="+$("#login").serialize()+"&action=login" 

鑑於someusersomepassword,就會發出這樣的數據:

形式= UNAME = SomeUser的& upass = somepassword &動作=登錄

注意雙等號,這是錯誤的,這就是爲什麼你會得到錯誤。如果你放棄了form=部分,那麼你會得到一個正確的查詢字符串。

然而,奇怪的是在查詢字符串參數發送的體的消息而不是URL的。它會更有意義,構建你的代碼是這樣的:

var loginUrl = "server.php" 
    + "?" 
    + $("#login").serialize() 
    + "&action=login" 
    ; 

$.ajax({ 
    type: "POST", 
    url: loginUrl, 
    success: function(response){ 
    // ... 
    }, 
    error: function(response){ 
    // ... 
    } 
); 

...或身體發出的JSON而不是作爲查詢字符串參數。

To find out how to serialize to JSON, see this question

+0

嘿謝謝Merlyne ...這工作... –

+1

Merlyn,如果你發送JSON,jQuery會自動序列化它,並將其轉換爲查詢字符串形成。這種情況的最佳做法是使用'data'屬性。阿米特做得對。 –

+0

@EmreErkan:「如果你發送JSON,jQuery會自動序列化並將其轉換爲查詢字符串形成」 - 它不會將它放在URL tho中(至少[不是通過我的實驗](http://jsfiddle.net/) cqadk /))。如果它自動撕裂JSON(甚至手動格式化)並將其轉換爲消息*正文中的查詢字符串*,那很奇怪。我正在談論AJAX最佳實踐,而不是jQuery。讓你的AJAX API期望消息正文中的查詢字符串很奇怪。 –