0

私は何時間も試みてきましたが、何が間違っているのかを理解することはできません.単純な何かが欠けていると確信していますが、どんな助けも素晴らしいでしょう.

動的に入力されるオブジェクトを作成しました。これは完全に機能しますが、ajax を介してデータを php プロセス ページに送信しようとすると問題が発生します。

以下のコードは、オブジェクトがキーと値を取得するための私のループです。

//build up dynamic datastring for ajax
            var dataString = ""
            dataString += "{";
            jQuery.each(obj,function(key, value) {
                dataString += "'"+key+"':'"+value+"',";
            });
            //remove last , then add the containing bracket
            dataString = dataString.slice(0,-1);
            dataString += "};";
            console.log(dataString);

                //do ajax
                jQuery.ajax({
                    url:'/builder/process-form.php',
                    type:'POST',
                    data:dataString
                }).done(function(data){
                    console.log(data);
                });
            });

コンソールに dataString var を書き込みました。これが出力です {'type':'tickbox','fname':'Empty','value':'Empty','req':'Yes','valType' :''}; これはデータ パラメータに対して適切に構造化されているように見えますか?

PHPページで、すべての投稿データをループして、{'type':'tickbox','fname':'Empty','value':'Empty','req':'Yes ','valType':''}; data: 行の後、これは機能しますか?

どんな助けでも大歓迎です

どうもありがとう

イアン

4

2 に答える 2

1

これはデータ パラメータに対して適切に構造化されているように見えますか?

いいえ。ソース コードを JavaScript オブジェクト リテラルにビルドしています。dataパラメータには通常の JavaScript オブジェクトが必要です。

dataStringそれに関連するすべてのものを取り除きます。

data: obj

(標準形式のエンコードされたデータではなく) そのような形式でデータを送信したい場合は、JSON (生成していたものとほぼ同じですが、より厳密な引用規則) を使用し、標準関数で生成できます。

var datastring = JSON.stringify(obj);

ただし、それを行う場合は、リクエスト ヘッダーで指定する必要があります。

data: datastring,
contentType: "application/json",

また、PHP 側では別の方法で処理します

于 2013-10-27T09:08:22.207 に答える
1

プロセスで何かが足りないかもしれませんが、オブジェクトのように見える「データ文字列」を作成する必要はありません。オブジェクトを送信するだけです:

  //do ajax
  jQuery.ajax({
       url:'/builder/process-form.php',
       type:'POST',
       data:obj
  }).done(function(data){
   console.log(data);
 });

次に、PHP 側で $_POST を使用してオブジェクトのプロパティを取得します。

于 2013-10-27T09:08:52.773 に答える