0

我想通过 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
...

意味着参数不被解析。有人可以指出我出错的地方吗?

4

2 回答 2

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"));
于 2012-09-11T08:42:18.500 回答
2

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() {}
});
于 2012-09-11T08:50:22.860 回答