2012-04-07 75 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(); 

我认为这是你想要达到的目标。