我有一个选择框,其中的选项遵循以下格式:
<select id="acctg_dept" name="acctg_dept">
<option value="{'acctg_dept_nbr':'2','acctg_dept_desc':'ELECTRONICS'}">02 - ELECTRONICS</option>
...
</select>
我试图通过ajax传递两个值,就像这样。我已经尝试过将acctg_dept
声明为数组。
var acctg_dept = [];
acctg_dept = $('#acctg_dept').val();
$.ajax({
type : 'post',
url : url,
data : {acctg_dept: JSON.stringify(acctg_dept)},
dataType : "data",
...
现在我已经在那里进行了字符串化,但是没有尝试过,但仍然遇到问题..
ajax调用一个执行此操作的PHP页面:
$acctg_dept = $_REQUEST['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不会将其视为数组,但我不确定为什么不这样做。
答案 0 :(得分:0)
你可以尝试但不测试..
html代码
<select id="acctg_dept" name="acctg_dept">
<option value='{"acctg_dept_nbr":"2","acctg_dept_desc":"ELECTRONICS"}'>ELC</option>
</select>
ajax调用你的服务器php文件
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;