从json_encode键中删除引号

时间:2014-01-26 22:04:49

标签: php jquery mysqli

我是jquery的新手,我正在尝试使用Jquery UI来创建自动完成。我还在学习,所以我确信我的代码可以更好,但这只是一个开始。 我有一个问题,jquery在json键周围加上引号。我已经看过了stackoverflow,我似乎无法找到解决方案所以我认为值得一提,因为我很好并且真的卡住了。我认为它我的php在某个地方一定有问题。

{"value":"Managerial Accountants","id":"5929"}

我希望我的输出像这样“

{value:"Managerial Accountants",id:"5929"}

这是我的其余代码:

 <script>
 jQuery(function(){
 jQuery(function () {
   var checkboxval;
   var availableTags = [
 <?php
// Database Connection
 error_reporting(-1);
 ini_set('display_errors', 'On');

 $con=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);

 $q="SELECT name as value,term_id as id FROM 7terms WHERE term_id not in 
     (select   parent from 7term_taxonomy) and term_id in (select term_id from   
     7term_taxonomy where  taxonomy='cat')";

$r = mysqli_query($con, $q);            

$city_state = array();
while($row = mysqli_fetch_assoc($r)){


 $rows[]=$row;
}
$json = json_encode($rows,true);
echo $json;
 ?>

];

//set autocomplete search
set_autocomplete_search("tags");
set_autocomplete_search("tags1");
set_autocomplete_search("tags2");

function set_autocomplete_search(p_tags) {
    var temp_p_tags = "#" + p_tags;
    jQuery(temp_p_tags).autocomplete({
        source: availableTags,
        select: function (event, ui) {
            var txtbx1 = (ui.item.name);
            var catid = (ui.item.id);
            alert(catid);
            jQuery(temp_p_tags).val(txtbx1);
            var tags = jQuery(temp_p_tags).val(txtbx1);
            //var checkboxval = "";
            checkboxval = tags.val();




            jQuery("#" + checkboxval + "").prop("checked", true);



        },
        change: function () {
            //alert("changed detected");
            //$("#" + checkboxval + "").prop("checked", false);
        }
    }).blur(function(event) {
            event.stopPropagation();
            event.preventDefault();

            //uncheck all checkboxes first
            jQuery(".test input:checked").each(function() {
                jQuery(this).attr("checked", false);
            });

            //set checkbox
            var checkbox_tags = jQuery("#tags").val();
            jQuery("#" + checkbox_tags + "").prop("checked", true);

            var checkbox_tags1 = jQuery("#tags1").val();
            jQuery("#" + checkbox_tags1 + "").prop("checked", true);

            var checkbox_tags2 = jQuery("#tags2").val();
            jQuery("#" + checkbox_tags2).prop("checked", true);
        });
   }
 });
});//]]>  

感谢您的时间。非常感谢我能得到的任何帮助,因为我还有很多需要学习的东西,并且已经坚持了几天。

1 个答案:

答案 0 :(得分:1)

您遇到此问题,因为您没有正确使用json。

您仍然可以将json_encode()回显到JS变量中,但摆脱[]括号,然后使用.parseJSON()来获取所需内容:

var availableTags = $.parseJSON('<?php
    // Database Connection
    error_reporting(-1);
    ini_set('display_errors', 'On');

    $con=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);

    $q="SELECT name as value,term_id as id FROM 7terms WHERE term_id not in 
         (select   parent from 7term_taxonomy) and term_id in (select term_id from   
         7term_taxonomy where  taxonomy='cat')";

    $r = mysqli_query($con, $q);            

    $city_state = array();
    while($row = mysqli_fetch_assoc($r))
    {
        $rows[]=$row;
    }
    echo json_encode($rows,true);
?>');

这个解决方案可以帮助您,但我建议您选择基于AJAX的解决方案,其中您的查询位于PHP文件中并使用AJAX调用它,因为 $.ajax() 可以自动转换只要设置dataType: 'json'

,就可以将JSON字符串放入格式正确的数组/对象中