我试图通过JSON使用ajax显示一些数据,但出于某种原因,当我提交表单时我没有得到任何结果,有什么建议吗?..
project_view.php
<form id="formProjectsRepSearch" action="controller.php" method="post" onsubmit="searchFormProjectsRep();
return false">
<label>Project Name </label>
<input name="terbusqueda" id="term" type="text">
<button id="btnBuscar">Search</button>
<input type="hidden" name="search" value="go">
</form>
<div id="ajaxProjectsRep">
</div>
Controller.php这样
if (isset($_POST["search"]) && $_POST["search"] == "go"){
$name = $_POST['terbusqueda'];
$project = new Project();
$pro = $project->get_project($name);
$serv = $project->get_project_service_by_id($pro);
echo json_encode($serv);
}
require_once("../views/project_view.php");
JS
function searchFormProjectsRep() {
var $form = $('#formProjectsRepSearch');
$.ajax({
url: $form.attr('action'),
data: $form.serialize(),
type:'POST',
success: function (resp) {
var resp_object = $.parseJSON(resp);
$("#ajaxProjectsRep").html(resp_object.service);
},
dataType: "json"
});
}
答案 0 :(得分:2)
您正在代码中解析JSON两次。
当$.ajax()
与dataType: "json"
一起使用时,jQuery会自动解析响应字符串,因此在您的情况下resp
是一个Javascript对象。由于resp
是对象而$.parseJSON()
需要字符串,因此resp_object
为空。尝试直接使用resp,它应该可以工作。
您可以使用console.log(resp)
查看PHP脚本返回的实际结果。
(另外,我看到您正在将回复转换为包含.html()
的HTML元素,在这种情况下,您可以将dataType: "html"
传递给$.ajax()
,而resp
则会将一个jQuery节点,但这不是问题。)
答案 1 :(得分:0)
你现在在php代码中将你的数据编码为JSON格式,之后调用ajax你必须解析它以显示你的html元素。下面是代码如何解析它。首先以对象形式显示所有数据到浏览器控制台,然后它将显示time_in值!
var data = JSON.parse(responce);
console.log(data[0]); // wholeobject
time_in = console.log(data[0].time_in);//only one field
&#13;