参数未正确传递给AJAX-编码问题
Params Not being passed to AJAX correctly - Encoding issue?
这是我的代码:
var params = '_SaveEditUserReq=1' ;
for(i=0; i<document.editUserForm.elements.length; i++)
{
// if(document.editUserForm.elements[i].name.substr(0, 7) == "school|") {
if (document.editUserForm.elements[i].type == 'checkbox') {
// If the id begins with 'school|', take the value if it is checked.
if (document.editUserForm.elements[i].checked) {
console.log("CHECKED!" + document.editUserForm.elements[i].value);
params += "&" + encodeURIComponent(document.editUserForm.elements[i].name) + "=" + encodeURIComponent(document.editUserForm.elements[i].value) ;
console.log(params);
}
}
else {
// Take everything else
params += "&" + document.editUserForm.elements[i].name + "=" + document.editUserForm.elements[i].value ;
}
}
以下是正在构建的内容:
SaveEditUserReq=1&_username=jgald&_orig_username=jgald&password_error_msg=&new_password_ok=YES&new_password=&new_password_text=&new_password_too=&new_password_too_text=&_last_name=TheSirName&_first_name=TheName&_middle_initial=&_profile=Teacher&_email=email@email.com&_teacher=&school%7C=Baker%20Elementary%20School&school%7C=Brookland%20Middle%20School&school%7C=Charles%20M.%20Johnson%20Elementary%20School&=SAVE CHANGES&=CANCEL&_site=TheSite
当它被传递给PHP
时,$_POST
数组只看到最后一个被检查的checkbox
。
在这种情况下:
[school|] => Charles M. Johnson Elementary School
你能看到出了什么问题吗?
给定多个具有相同名称的键/值对,PHP将丢弃除最后一个以外的所有键/值,除非键名称以字符[]
结尾。
如果这些字符存在,那么它将用一个名称不包括[]
的数组填充$_GET
(或post等)。
即
foo.php?bar%5B%5D=1&bar%5B%5D=2
将给出:
$_GET['foo'][0] == 1;
$_GET['foo'][1] == 2;
从JavaScript部分来看,有两个问题
编码名称
您不编码名称,只编码值
params += "&" + encodeURIComponent(document.editUserForm.elements[i].name)
应该是
params += "&" + document.editUserForm.elements[i].name
不对else中的值进行编码
您没有对else中的值进行编码!
"=" + document.editUserForm.elements[i].value ;
需要
"=" + encodeURIComponent(document.editUserForm.elements[i].value) ;
相关文章:
- ajax表单提交的编码问题
- 使用 POST 方法通过 ajax 发送的数据在发送到服务器之前是否必须进行 URL 编码
- 参数未正确传递给AJAX-编码问题
- 在一个模式AjAX编码器中显示不同的Gallery
- PHP JSON编码输出与Javascript Ajax不兼容
- 谷歌地图使用变量作为URL对AJAX进行地理编码
- AJAX PHP JSON编码未返回所有结果
- 如何对基于数组名称的输入进行编码以通过 AJAX 传递
- JQuery:参数:硬编码字符串与 ajax 检索到的字符串
- 如何使用 ajax get 重新编码 jquery 负载
- AJAX GET 未获取 JSON 编码的对象
- 如何通过jQuery Ajax发布数据在PHP中编码JSON
- jQuery 编码 ajax 查询字符串中的空格
- 为什么 AJAX 输出带有错误的编码
- base64编码的ajax的损坏发送了一些想法
- 将数据从选择菜单传递到另一个选择菜单 AJAX 编码点火器
- 如何避免在 js/ajax 脚本中对应用程序上下文路径进行硬编码
- AJAX编码有问题
- 我如何在php上运行ajax编码器
- 使用ajax编码器的动态依赖下拉菜单