繁体   English   中英

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

[英]Display json response on ajax call via POST

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

您在代码中解析JSON两次。

$.ajax()dataType: "json" ,jQuery会自动解析响应字符串,所以在你的情况下resp是一个Javascript对象。 由于resp是一个对象而$.parseJSON()需要一个字符串,因此resp_object为null。 尝试直接使用resp,它应该工作。

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

(另外,我看到你正在使用.html()将响应转换为HTML元素,在这种情况下,你可以将dataType: "html"传递给$.ajax()resp将会是一个jQuery节点,但那不是这里有问题。)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM