格式化动态构建的参数字符串以在数据中传递jquery ajax

我想通过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中进入数据的结果字符串“看起来正确”,但在字段validation后,在控制台的post选项卡中,它显示如下:

 {fctSelect: 2, strat: strat, ... 

代替:

 fctSelect: 2 strat: 1 ... 

意味着不解析参数。 有人可以指点我哪里出错了吗?

Darin Dimitrov的解决方案可能是您的选择,我会给您一个替代方案。 如果您通过serialize()收集表单的字段及其值,则只需添加如下静态数据:

 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() {} }); 

我会建议你一种替代方法而不是字符串连接:

 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"));