0

動的に構築されたフォームからajaxを介してphpスクリプトにデータを渡したいのですが、パラメーター文字列形式の正しい構文を見つけるのに問題があります。いくつかの固定パラメーターがあり、いくつかは動的に追加され、後者のキーと値は変更される可能性があります。

以下のように、文字列の連結としてパラメータリストを作成しようとしました。

...
var dataVars = '{fctSelect: 2, strat: strat, ' + gbl.dataVariables + '}';

...

$j.ajax({
    url: "ajax/script.php",
    type: "POST",
    data: dataVars,
...

gbl.dataVariablesの形式は次のとおりです。'field1:value1、field2:value2、field3、value3'

結果として得られるデータに入力される文字列は、console.logで「正しく表示されます」が、フィールドが検証されると、コンソールの[投稿]タブに次のように表示されます。

{fctSelect: 2, strat: strat, ...

それ以外の:

fctSelect: 2
strat: 1
...

パラメータが解析されないことを意味します。誰かが私が間違っていた場所を教えてもらえますか?

4

2 に答える 2

3

文字列の連結よりも別のアプローチをお勧めします。

var dataVars = {};

// add some static values
dataVars['fctSelect'] = 2;
dataVars['strat'] = 'some value';

// now add some dynamic values
for (var i = 0; i < 10; i++) {
    dataVars['field' + i] = i;
}

// send the data as a JSON encoded request
$j.ajax({
    url: 'ajax/script.php',
    type: 'POST',
    data: JSON.stringify(dataVars),
    contentType: 'application/json',
...

そしてあなたの中にscript.php

$data = json_decode(file_get_contents("php://input"));
于 2012-09-11T08:42:18.500 に答える
2

ダリン・ディミトロフの解決策はおそらくあなたのために行く方法です、私はあなたに代わりを与えるだけです。serialize()を使用してフォームのフィールドとその値を収集する場合は、次のように静的データを追加するだけです。

var dataVars = $('form').serialize(),
    dataVars += dataVars.length > 0 && '&'; // in case there are no form fields
    dataVars += 'fctSelect=2&strat=somevalue';

$j.ajax({
    url: 'ajax/script.php',
    type: 'POST',
    data: dataVars,
    success: function() {}
});
于 2012-09-11T08:50:22.860 に答える