我想通过ajax将动态构建的表单中的数据传递给php脚本,但是却无法找到参数字符串格式的正确语法。 有一些固定参数,有些是动态添加的,后者的键和值可能会发生变化。
我尝试将参数列表构建为字符串的串联,如下所示:
...
var dataVars = '{fctSelect: 2, strat: strat, ' + gbl.dataVariables + '}';
...
$j.ajax({
url: "ajax/script.php",
type: "POST",
data: dataVars,
...
gbl.dataVariables的格式如下:'field1:value1,field2:value2,field3,value3'
在console.log中进入数据的结果字符串“看起来正确”,但是在字段验证后,在控制台的post选项卡中,它显示如下:
{fctSelect: 2, strat: strat, ...
而不是:
fctSelect: 2
strat: 1
...
表示不解析参数。有人可以指点我哪里出错了吗?
答案 0 :(得分:3)
我建议你采用替代方法而不是字符串连接:
var dataVars = {};
// add some static values
dataVars['fctSelect'] = 2;
dataVars['strat'] = 'some value';
// now add some dynamic values
for (var i = 0; i < 10; i++) {
dataVars['field' + i] = i;
}
// send the data as a JSON encoded request
$j.ajax({
url: 'ajax/script.php',
type: 'POST',
data: JSON.stringify(dataVars),
contentType: 'application/json',
...
然后在script.php
:
$data = json_decode(file_get_contents("php://input"));
答案 1 :(得分:1)
var dataVars = $('form').serialize(),
dataVars += dataVars.length > 0 && '&'; // in case there are no form fields
dataVars += 'fctSelect=2&strat=somevalue';
$j.ajax({
url: 'ajax/script.php',
type: 'POST',
data: dataVars,
success: function() {}
});