JavaScript对象文字添加

时间:2013-04-28 18:02:34

标签: php javascript ajax javascript-objects

我正在尝试将项添加到我已定义的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对象的数据如下所示:

enter image description here

所以我知道它确实拥有JS对象中的数据。

但是,它似乎没有将该信息发送到我的PHP页面,ajax正在调用?

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> ,没有。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

不应该是

$_POST['push']['fname']

否则请删除print_r($_POST)以查看您的数据所在位置。

答案 1 :(得分:0)

您嵌套了两个对象,这不是x-www-url-formencoded从页面到服务器的数据传输的标准。

您需要合并这两个对象。正如您已经拥有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编码。