我正在尝试将项添加到我已定义的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对象中的数据。
但是,它似乎没有将该信息发送到我的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> ,没有。
我做错了什么?
答案 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编码。