如何定位数组

时间:2016-01-03 09:48:39

标签: javascript php jquery arrays jquery-ui-autocomplete

我正在使用jquery.ui自动完成脚本。

请参阅此fiddle

所以,而不是

colors = [['White', '#fff'], ['Black', '#000'], ['Red', '#f00'], ['Green', '#0f0'], ['Blue', '#00f']];

我在查询数据库后以相同的数组形式获取数据,但是从PHP脚本获取数据。 所以在我的脚本中,colors = data;

问题是我需要更改数组显示中的第二项,只需在值周围添加括号即可。我该怎么办?

这是我的剧本

$("document").ready(function(){       
      var data = {
        "action": "test"
      };
      data = $(this).serialize() + "&" + $.param(data);
      $.ajax({
      type: "GET",
      dataType: "json",
      url: "store2.php?target="+target, //Relative or absolute path to response.php file
      data: data,
      success: function(data) {
          //console.log(data);

       var useThis=[];
          if(target=="subject")
          {
              useThis = [{
              name: 'level',
              minWidth: 'auto',
              symbol: ''},
              {
              name: 'subject',
              minWidth: 'auto',
              symbol: ' >  '},
               {
              name: 'posts',
              minWidth: 'auto',
              symbol: '     '},
              ];

          }
          else  if(target=="location")
          {
              useThis = [{
              name: 'level',
              minWidth: 'auto',
              symbol: ''}];

          }
          else
          {
              useThis = [{
              name: 'level',
              minWidth: 'auto',
              symbol: ''}];

          }
          var columns = useThis;
          colors = data;


          //alert(selectThis);
          var valueV=targetItem.attr("value");
          targetItem.mcautocomplete({
          showHeader: true,
          columns: columns,
          source: colors,
          select: function(event, ui) 
          {
              // Set the input box's value
              var selectThis = $(this).attr("class").split(" ")[0];//get only the first class
              if(target=="subject")
              {
              this.value = (ui.item ? ui.item[0] +" > " + ui.item[selectThis] : '');
              }
              else
              {
                   this.value = (ui.item ? ui.item[selectThis] : '');
              }


              // Set the output div's value
             // $('#show_subject') && $('#show_place').text(ui.item ? (target+ ' = ' + ui.item[selectThis] + ui.item[2]) : 'Select a subject');
              if(target=="subject")
              {
              $('input[name="try"]').val(ui.item[3]);
              }
               if(target=="location")
              {

              $('input[name="lat"]').val(ui.item[1]);
              $('input[name="lon"]').val(ui.item[2]);

              }
             if(target=="tutor")
              {

              $('input[name="tutor"]').val(ui.item[0]);
              }
              return false;
          }
          });
         }
});

PHP

$statement1="SELECT * FROM categories,subjects WHERE categories.catid=subjects.catid";

$target=$_GET["target"];

//" catname"," subname"," subcount"和" catid"是数据库中的列名称。所以我不能在这里添加括号,否则我不会让他们的价值正确。

$sql=$statement1;
        $v_1="catname";
        $v_2="subname";
        $v_3="subcount";
        $v_4="catid";

    $stmt =connection::$pdo->prepare($sql);
            $stmt->execute();

            $json=array();
            while($row = $stmt->fetch())
            {

              array_push($json,array($row[$v_1],$row[$v_2],$row[$v_3],$row[$v_4]));

            }

    echo json_encode($json)

那么如何定位特定项目并在其周围添加括号?

2 个答案:

答案 0 :(得分:0)

我在数组中的第二项添加了括号:

source: jQuery.each(colors , function(index, value){
                 console.log(value[1]);
                 value[2] = "("+value[1]+")"; 
               }),

答案 1 :(得分:0)

更改each功能中的_renderItem循环,如下所示。希望这会对你有所帮助。

$.each(this.options.columns, function(index, column) {
    var i = column.valueField ? column.valueField : index;

    var itm=item[i];      
    if (i==1) 
        itm='('+item[i]+')';   

    t += '<span style="float:left;min-width:' + column.minWidth + ';">' + itm+'</span>'
});

UPDATED FIDDLE