我是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);
});
}
});
});//]]>
感谢您的时间。非常感谢我能得到的任何帮助,因为我还有很多需要学习的东西,并且已经坚持了几天。
答案 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'