将序列化的jquery数据传递给php,我做错了什么?
我目前有一个带有输入和名称属性的表单 我能够通过jquery获得我所需要的:将序列化的jquery数据传递给php,我做错了什么?,php,jquery,ajax,serialization,Php,Jquery,Ajax,Serialization,我目前有一个带有输入和名称属性的表单 我能够通过jquery获得我所需要的: var inputValues= $('.myForm').serialize(); 如果我alert(inputValues),我就会得到我所需要的(比如表单get变量:categories=examplevalue&name=examplename&email=exampleemail) 现在,我正试图通过ajax将其传递给PHP,就像这样(ajax.js) 在我的PHP中,我有: if(isset($_POS
var inputValues= $('.myForm').serialize();
如果我alert(inputValues)
,我就会得到我所需要的(比如表单get变量:categories=examplevalue&name=examplename&email=exampleemail
)
现在,我正试图通过ajax将其传递给PHP,就像这样(ajax.js)
在我的PHP中,我有:
if(isset($_POST['inputs'])){
echo $_POST['inputs'];
}
我假设它会根据我的表单发出一堆变量的警报,但它只会发出名为categories
我做错了什么
谢谢两件事:
$.ajax({
url: "myfile.php",
type: "POST",
data: $('.myForm').serialize()
}).done(function(data){
alert(data);
});
用输入作为字段名的前缀。像
变成
if(isset($_POST['inputs'])){
var_dump($_POST['inputs']);
}
(echo
如果不是标量值,则只打印Array
)parse_str(file_get_contents("php://input"), $POST);
然后使用$POST
而不是$\u POST
。请注意,$POST
不会是超全局的。有两件事:
$.ajax({
url: "myfile.php",
type: "POST",
data: $('.myForm').serialize()
}).done(function(data){
alert(data);
});
用输入作为字段名的前缀。像
变成
if(isset($_POST['inputs'])){
var_dump($_POST['inputs']);
}
(echo
如果不是标量值,则只打印Array
)parse_str(file_get_contents("php://input"), $POST);
然后使用
$POST
而不是$\u POST
。请注意,$POST
不会是超全局的。只需查看发送到PHP的内容。。。如果将“inputvalues=”与serialzied表单连接起来,则会向PHP发送以下内容:
inputs=categories=examplevalue&name=examplename&email=exampleemail
所以,是的。。。这会让人感到困惑。:)
相反,只需在jQuery中执行以下操作:
data:inputValues
你需要在邮件上更改你的接受条件
您还可以将数据序列化为JSON并对其进行反序列化,但这应该可以让您开始了。只需查看发送到PHP的内容。。。如果将“inputvalues=”与serialzied表单连接起来,则会向PHP发送以下内容:
inputs=categories=examplevalue&name=examplename&email=exampleemail
所以,是的。。。这会让人感到困惑。:)
相反,只需在jQuery中执行以下操作:
data:inputValues
你需要在邮件上更改你的接受条件
您还可以将数据序列化为JSON并反序列化,但这应该可以让您开始了。我没有测试这段代码,但我认为它可以工作
var inputValues= $('.myForm').serialize();
$.ajax({
url: "myfile.php",
type: "POST",
data: inputValues,
success: function(data){
alert(data);
// or use: console.log(data); /*you need firebug to log*/
}
});
//和php
if(isset($_POST)){
var_dump($_POST);
}
我没有测试这段代码,但我认为它是有效的
var inputValues= $('.myForm').serialize();
$.ajax({
url: "myfile.php",
type: "POST",
data: inputValues,
success: function(data){
alert(data);
// or use: console.log(data); /*you need firebug to log*/
}
});
//和php
if(isset($_POST)){
var_dump($_POST);
}
serialize()
在$.ajax
调用中,删除输入=
,只需单独使用输入值即可。这将允许您使用$\u POST['myvar']
serialize()
生成无法分配给单个参数的查询字符串(foo=bar&baz=yikes
)
在$.ajax
调用中,删除输入=
,只需单独使用输入值即可。这将允许您使用$\u POST['myvar']
获取表单中的单个变量。请查看以下内容:
很抱歉,我将在计算机上修复格式设置
(function($) {
$.fn.serializePost = function() {
var data = {};
var formData = this.serializeArray();
for (var i = formData.length; i--;) {
var name = formData[i].name;
var value = formData[i].value;
var index = name.indexOf('[]');
if (index > -1) {
name = name.substring(0, index);
if (!(name in data)) {
data[name] = [];
}
data[name].push(value);
}
else
data[name] = value;
}
return data;
};
})(jQuery);
看看这个:
很抱歉,我将在计算机上修复格式设置
(function($) {
$.fn.serializePost = function() {
var data = {};
var formData = this.serializeArray();
for (var i = formData.length; i--;) {
var name = formData[i].name;
var value = formData[i].value;
var index = name.indexOf('[]');
if (index > -1) {
name = name.substring(0, index);
if (!(name in data)) {
data[name] = [];
}
data[name].push(value);
}
else
data[name] = value;
}
return data;
};
})(jQuery);
此方法并不总是有效(取决于所使用的web服务器、PHP设置等)。如果您计划使用此功能,请在您的预期环境中进行彻底测试。var_dump($\u POST['inputs'])无法正常工作,因为表单应包含of或textarea或…@hamidreza66 var_dump会对php
中可用的(几乎)任何数据类型进行大量报告。你说它不能正常工作是什么意思?如果我的表单中有一个select元素,如果(isset($\u POST['inputs']){…}没有返回select值,即使你应该检查输入,而不是inputs@hamidreza66…
将在提交时设置$\u POST['inputs']
。因此,isset
将返回true。问题出在哪里?此方法并不总是有效(取决于所使用的web服务器、PHP设置等)。如果您计划使用此功能,请在您的预期环境中进行彻底测试。var_dump($\u POST['inputs'])无法正常工作,因为表单应包含of或textarea或…@hamidreza66 var_dump会对php
中可用的(几乎)任何数据类型进行大量报告。你说它不能正常工作是什么意思?如果我的表单中有一个select元素,如果(isset($\u POST['inputs']){…}没有返回select值,即使你应该检查输入,而不是inputs@hamidreza66…
将在提交时设置$\u POST['inputs']
。因此,isset
将返回true。问题出在哪里?我想这就是帮助我解决问题的原因,我知道我现在如何度过难关。谢谢,我想这就是帮助我摆脱困境的原因,我知道我现在该如何度过难关了。谢谢