0

我尝试使用 ajax 通过 JSON 显示一些数据,但是由于某种原因,当我提交表单时我没有得到任何结果,有什么建议吗?..

项目视图.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>

控制器.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"
});
}
4

2 回答 2

2

您在代码中解析 JSON 两次。

$.ajax()与 一起使用时dataType: "json",jQuery 会自动解析响应字符串,因此在您的情况下,resp它已经是一个 Javascript 对象。因为resp是一个对象并且$.parseJSON()需要一个字符串,resp_object所以为空。尝试直接使用 resp ,它应该可以工作。

您可以使用console.log(resp)查看 PHP 脚本返回的实际结果。

(另外,我看到您正在将响应转换为带有 的 HTML 元素.html(),在这种情况下,您可以传递dataType: "html"$.ajax()并且resp已经是 jQuery 节点,但这不是这里的问题。)

于 2013-06-18T18:55:41.937 回答
0

现在,在 ajax 调用之后,您将数据编码为 php 代码中的 JSON 形式,您必须解析它以显示到您的 html 元素上。下面是如何解析它的代码。首先将对象形式的所有数据显示到浏览器控制台中,然后它将显示 time_in 值!

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

于 2017-04-14T12:08:26.683 回答