在“选择选项”中使用JSON数组

时间:2014-06-05 15:22:46

标签: 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传递两个值,就像这样。我已经尝试过将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不会将其视为数组,但我不确定为什么不这样做。

1 个答案:

答案 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;