通过POST显示对ajax调用的json响应

时间:2013-06-18 18:47:15

标签: php jquery ajax json

我试图通过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"
});
}

2 个答案:

答案 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值!

&#13;
&#13;
var data = JSON.parse(responce);
console.log(data[0]); // wholeobject
time_in = console.log(data[0].time_in);//only one field
&#13;
&#13;
&#13;