当通过ajax从jquery调用php时,有任何响应。我更改了dataType
并将json
改为html
。我认为问题是,对于ajax调用永远不会触发php代码,似乎$_POST['retriveForm']
永远不会带有值。
PHP:
if(isset($_POST["retriveForm"])) {
$data_json =array();
$id = $_POST['retriveForm'];
$sql = "SELECT * FROM mytable WHERE Id = $id";
while ($row = mysqli_fetch_array($db->consulta($sql)) {
$data_json = array('item1' => $row['item1'],'item2' => $row['item2']) ;
}
$data_json['item_array'] = call_a_function_return_array();//this works
echo json_encode($data_json);
}
和jQuery:
$(document.body).on('click', '.edit', function() {
var id = $(this).data('id');
$.ajax({
type: "POST",
url: "is_the_same_page.php",
data: {
retriveForm: id
},
dataType: "json",
success: function(response) {
$('#myForm').find('input').eq(1).val(response.item1);
}
});
});
如果这可能很重要,代码就在同一页面中。
答案 0 :(得分:0)
由于AJAX代码在同一个脚本中,因此请确保在这种情况下不输出任何普通的HTML。在输出任何HTML之前,您的PHP代码应该位于脚本的最开头。并且您应该在回显JSON之后退出脚本。否则你的JSON将与HTML混合在一起,jQuery无法解析响应。
此外,您未在循环中正确添加$data_json
。您每次都要覆盖变量,而不是按下它。
<?php
// code here to set up database connection
if(isset($_POST["retriveForm"])) {
$data_json =array();
$id = $_POST['retriveForm'];
$sql = "SELECT * FROM mytable WHERE Id = $id";
while ($row = mysqli_fetch_array($db->consulta($sql)) {
$data_json[] = array('item1' => $row['item1'],'item2' => $row['item2']) ;
}
$data_json['item_array'] = call_a_function_return_array();//this works
echo json_encode($data_json);
exit();
}
?>
<html>
<head>
...
然后在success
函数中,您需要为response
的元素编制索引,因为它是一个数组,而不是一个对象。