Javascript 在选择选项中使用JSON数组
我有一个选择框,其中的选项遵循以下格式:Javascript 在选择选项中使用JSON数组,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,我有一个选择框,其中的选项遵循以下格式: <select id="acctg_dept" name="acctg_dept"> <option value="{'acctg_dept_nbr':'2','acctg_dept_desc':'ELECTRONICS'}">02 - ELECTRONICS</option> ... </select> 现在我已经在那里严格化了,但是我没有尝试过,而且仍然有问题 ajax调用一个PHP页
<select id="acctg_dept" name="acctg_dept">
<option value="{'acctg_dept_nbr':'2','acctg_dept_desc':'ELECTRONICS'}">02 - ELECTRONICS</option>
...
</select>
现在我已经在那里严格化了,但是我没有尝试过,而且仍然有问题
ajax调用一个PHP页面来执行以下操作:
$acctg_dept=$_请求['acctg_dept'];
$acctg_dept=json_decode$acctg_dept,true
同样,我尝试了几种不同的方法,但仍然没有得到我想要的结果,即能够在相同的PHP脚本中执行以下操作
$acctg_dept_nbr=$acctg_dept['acctg_dept_nbr']
使用这里概述的方法,我得到非法的字符串偏移量。我试过foreach和$acctg_dept[0]['acctg_dept_nbr'];我一事无成。我认为PHP不把它看作是一个数组,但我不确定为什么不把它看作数组。您可以尝试它,但不需要测试 html代码
<select id="acctg_dept" name="acctg_dept">
<option value='{"acctg_dept_nbr":"2","acctg_dept_desc":"ELECTRONICS"}'>ELC</option>
</select>
在服务器端尝试捕获post数据
print "<pre>";
print_r($_POST);
die;
acctg_dept应该已经是一个字符串,您不需要调用JSON.stringify.install firebug并监视ajax调用来查看问题所在,当我这样做时,非法偏移错误消失了,但是$acct_dept_nbr=$acctg_dept['acctg_dept_nbr');赋值似乎仍然不起作用。@LMG没有什么要字符串化的,它不是JavaScript对象或数组,它已经是字符串了。您的字符串是无效的JSON,因此它永远不会起作用。标识符和值应使用双引号而不是单引号引用。避免手动构建JSON。在PHP中,在本机数组或对象上使用json_编码。
var acctg_dept = [];
acctg_dept = $('#acctg_dept').val();
$.ajax({
type : 'post',
url : url,
data : {acctg_dept: acctg_dept}, //don't stringify it
success:function(data){
console.log(data);
}
});
print "<pre>";
print_r($_POST);
die;