Я новичок в jQuery и JSON. У меня следующий PHP-код (getData.php) выполняет запрос из базы данных:
<?php
header('Content-Type: application/json');
....
// some code here
....
$my_arr=array();
// fectching data into array
while($info = mysqli_fetch_array($result))
{
// convert to integer value if there is a bug after passing json_encode
$rev=intval($info['bIRevNum']);
$name=$info['bIName'];
echo "<tr>";
echo "<td>" . $info['bName'] . "</td>";
echo "<td>" . $info['bRevNum'] . "</td>";
echo "<td>" . $info['bIName'] . "</td>";
echo "<td>" . $info['bIRevNum'] . "</td>";
$my_arr[]=array('br'=>$name,'rev'=>$rev);
echo "<td>" . $info['pName'] . "</td>";
echo "<td>" . $info['pRevNum'] . "</td>";
echo "</tr>";
}
// json encode
echo json_encode($my_arr);
?>
После использования echo 'json_encode' здесь я могу увидеть объект JSON в этом формате [{"br":"itemsb1","rev":37},{"br":"itemb2","rev":45}]
on моя страница.
Теперь я хочу получить доступ к целому элементу rev
элемента объекта (37 и 45) для будущего использования jQuery в другом PHP файле, назовем его index.php
и приведенным ниже скриптом
<html>
.....
<script>
$(document).ready(function(){
$("button").click(function(){
$.getJSON("getData.php", function(obj) {
$.each(obj, function(key, value){
$("#div1").append("<li>"+value.rev+"</li>");
});
});
});
});
</script>
...
// test here
<!---jquery--->
<div id="div1"><h2>CHANGE >>>> ....!!!!</h2></div>
<button>Calling from different PHP file</button>
</html>
Если это правильно, когда я нажимаю кнопку "Вызов из другого файла PHP", она должна отображать значение объекта JSON как 37, 45.
Я пробовал много способов, но на моей странице ничего не отображается.
Пожалуйста, помогите мне с этим!
Похоже, ваша проблема заключается в том, что вы эхо и html, а также JSON. попробуйте удалить "эхо" из этих строк
echo "<tr>";
echo "<td>" . $info['bName'] . "</td>";
echo "<td>" . $info['bRevNum'] . "</td>";
echo "<td>" . $info['bIName'] . "</td>";
echo "<td>" . $info['bIRevNum'] . "</td>";
echo "<td>" . $info['pName'] . "</td>";
echo "<td>" . $info['pRevNum'] . "</td>";
echo "</tr>";
НЕ удаляйте эту строку:
$my_arr[]=array('br'=>$name,'rev'=>$rev);
Также убедитесь, что ваш javascript правильно синтаксис
$("button").click(function(){
$.getJSON("getData.php", function(obj) {
$.each(obj, function(key, value) {
$("#div1").append("<li>"+value.rev+"</li>");
});
});
});
Убедитесь, что единственное содержимое, возвращаемое из getData.php, является форматированным JSON; в противном случае он не будет правильно разбираться. Если вы непосредственно заходите в getData.php в своем браузере, вы должны видеть только контент JSON и ничего больше (включая ошибки, предупреждения и т.д.). Ваш jQuery выглядит хорошо; поэтому проблема должна быть в том, что содержимое возвращается из PHP-скрипта. Я просто взломал тривиальный тестовый пример, используя этот PHP:
<?php
header('Content-type: application/json');
$my_arr[]=array('br'=>'something','rev'=>'2.0.5');
echo json_encode($my_arr);
?>
Используя точный HTML, который вы предоставили, работает так, как ожидалось.
"<td>" . $info['bName'] . "</td>"
и т. Д.) В дополнение к JSON?