0

すでに定義されている JS オブジェクトに項目を追加しようとしています:

var updateInfo = {
   called: 'UPDATEINFO',
   acct: [insert_php]echo $_SESSION['clientAcc'];[/insert_php]
};

そして、いくつかのajaxでこれを呼び出しました:

updateInfo.push = ({
      fname: encodeURIComponent(toTitleCase($("#FName").val())),
      lname: encodeURIComponent(toTitleCase($("#LName").val())),
      address1: encodeURIComponent(toTitleCase($("#address1").val())),
      address2: encodeURIComponent(toTitleCase($("#address2").val())),
      city: encodeURIComponent(toTitleCase($("#city").val())),
      state: encodeURIComponent($("#state").val()),
      zip: encodeURIComponent($("#zip").val()),
      email: encodeURIComponent($("#email").val()),
      phone: encodeURIComponent($("#phone").val())
});

console.log(updateInfo);

$.ajax({
    type: "POST",
    url: "../form/master.php",
    data: updateInfo,
    dataType: "html",
    success: function (data, responseText, textStatus) {
       ect ect....

JS オブジェクトのデータは次のようになります。

ここに画像の説明を入力

だから私はそれがJSオブジェクト内にデータを持っていることを知っています。

ただし、ajax が呼び出している PHP ページにその情報を送信していないようです。

if ($called == 'UPDATEINFO') {  
    $fname      = urldecode($_POST['fname']);
    $lname      = urldecode($_POST['lname']);
    $address1   = urldecode($_POST['address1']);
    $address2   = urldecode($_POST['address2']);
    $city       = urldecode($_POST['city']);
    $state      = urldecode($_POST['state']);
    $zip        = urldecode($_POST['zip']);
    $email      = urldecode($_POST['email']);
    $phone      = urldecode($_POST['phone']);

echo 'debug> ' . $fname;

debug>が表示されますが、何も表示されません。

私は間違って何をしていますか?

4

2 に答える 2

0

2 つのオブジェクトをネストしましたが、これはx-www-url-formencodedページからサーバーへのデータ転送の標準ではありません。

代わりに、2 つのオブジェクトをマージする必要があります。すでにjQueryを持っているので、これは$.extend()メソッドで簡単です:

$.extend(updateInfo, {
    fname: toTitleCase($("#FName").val()),
    ...
});

さもないと:

var extra = {
    fname: toTitleCase($("#FName").val()),
    ...
}

for (var key in extra) {
    if (extra.hasOwnProperty(key)) {
        updateInfo[key] = extra[key];
    }
}

注意: フィールドを手動で URL エンコードおよびデコードする必要はありません。$.ajax()メソッドはフィールド フォームを自動的に URL エンコードします。

于 2013-04-28T18:21:53.773 に答える