0

問題が1つあります...

これらは私の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のコメントを明確にするために、シリアライズが何をするかを観察しましょう:

<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 を使用してアクセスする) クエリ パラメータに割り当てると、基本的に、$_GET['form'] が上記の文字列と等しいことを PHP に伝えることになりますが、これは意図したものではありません。PHP は $_GET['form'] の内容を解析して $_GET['input1'] を取得しません... serialize() によって返される値は、$.get() の 2 番目の引数として直接使用する必要があります。

于 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 に答える