2012-04-07 77 views
0

我有一個問題...PHP解析jQuery的形式連載錯誤的方式

這些都是我的一些HTML表單元素的名稱: 名= 「密碼」 名= 「元[naziv_firme]」

這是我的jQuery

var data = {action: 'edit', form: $('input', 'form#edit-klijent-form').serialize()} 

console.log(data); 

$.get('/index.php/admin-ajax', data, 
function(response){ 
    // Success 
    $('div#edit-klijent-div,.tipsy').hide(); 
    $('div#klijent-edit-success').show(); 
}); 

CONSOLE.LOG給我的結果是:

action edit 
form userID=12&password=&password-match=&email=test15%5Bmeta%5Bnaziv_firme%5D=test15&meta%5Bkontakt_osoba%5D=test156&meta%5Bkontakt_telefon%5D=test157&meta%5Bkontakt_email%5D=test158 

所以一切都看起來不錯!

現在在PHP中,我有var_dump($ _GET);其結果是:

string(165) "userID=12&password;=&password;-match=&email=test15&meta;[naziv_firme]=test15&meta;[kontakt_osoba]=test156&meta;[kontakt_telefon]=test157&meta;[kontakt_email]=test158" 

爲什麼PHP放置;在密碼後,在&meta; [... ??

和想法?我究竟做錯了什麼?

謝謝!

+0

您能向我們展示PHP請求的查詢字符串嗎?你可以這樣做:'echo $ _SERVER ['QUERY_STRING'];'。 – 2012-04-07 19:33:10

+0

action = edit&form = userID%3D12%26password%3D%26password-match%3D%26email%3Dtest15%26meta%255Bnaziv_firme%255D%3Dtest15%26meta%255Bkontakt_osoba%255D%3Dtest156%26meta%255Bkontakt_telefon%255D%3Dtest157%26meta%255Bkontakt_email %255D%3Dtest158 – SniffWP 2012-04-07 19:34:35

+0

你能否粘貼你的HTML表單? – 2012-04-07 19:37:14

回答

0

在你的HTML表單元素,添加:

<input type="hidden" name="action" value="edit"> 

而改變這一行:

var data = {action: 'edit', form: $('input', 'form#edit-klijent-form').serialize()} 

進入這個:

var data = $('input', 'form#edit-klijent-form').serialize(); 

不能真正檢驗它,因爲我不沒有你的HTML或服務器配置,但我認爲它應該可以工作。

更新:

澄清@ AnthonyGrist的評論上面,讓我們看到了什麼序列化的功能:

<form> 
    <input type="text" name="input1" value="foo"> 
    <input type="text" name="input2" value="bar"> 
</form> 

<script> 
    var data = $('form input').serialize(); 
    // data is now: 'input1=foo&input2=bar' 
</script> 

如果您分配上述返回的查詢參數的值(PHP存取使用$ _GET ),你基本上告訴PHP $ _GET ['form']等於上面的字符串,這不是你想要的。 PHP不會解析$ _GET ['form']的內容給你$ _GET ['input1'] ... serialize()返回的值應該直接用作$ .get()的第二個參數。

var data = {action: 'edit', form: $('input', 'form#edit-klijent-form').serialize()} 

要:

+0

是的,我知道它的工作方式......但是,這是一個jQuery錯誤或? – SniffWP 2012-04-07 19:40:24

+1

@ user854993錯誤與您嘗試使用'.serialize()'的方式有關。它不應該被用作參數的值。 – 2012-04-07 19:47:42

+0

謝謝大家的幫助! – SniffWP 2012-04-07 19:48:56

0

從改變你的代碼

var data = "action=edit&" + $('input', 'form#edit-klijent-form').serialize(); 

我認爲這是你想要達到的目標。