0

我有一个问题...

这些是我的一些 html 表单元素的名称:name="password" name="meta[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;[... ??

和想法?我究竟做错了什么?

谢谢!

4

2 回答 2

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 上面的评论,让我们观察一下 serialize 的作用:

<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() 的第二个参数。

于 2012-04-07T19:38:38.223 回答
0

更改您的代码:

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

至:

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

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

于 2012-04-07T19:54:43.120 回答