Я новичок в 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); }); } }); });//]]>
Спасибо за ваше время. Я очень ценю любую помощь, с которой я могу справиться, поскольку мне еще многое предстоит узнать и застрял на этом пару дней.
Эта проблема возникает из-за неправильного использования 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 () может автоматически преобразовывать строку JSON в правильно отформатированный массив / объект ожидается, пока вы установите dataType: 'json'