繁体   English   中英

jQuery AJAX没有从php文件中获取JSON

[英]Jquery AJAX not taking in JSON from the php file

我一直在尝试使用jquery .ajax函数从服务器获取数据。 但是,每当我将数据类型指定为JSON时,它都无法工作。

当我未定义dataType时,它可以正常工作,但我需要dataType为JSON。

以下是代码。

Practice.php

<!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Practice</title>

        <?php
          require("db.php");
         ?>
         <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

      </head>
      <body>
        <div>Why doesn't it work..</div>
        <div id="demo"></div>
        <button type="button" id="button" name="button">button</button>
      </body>
      <script>
      //Load table
      $('#button').on('click', function(){
        // var please = 1;
        $.ajax({
          type: 'POST',
          url: 'AJAX.php',
          // data: {id: please},
          dataType: 'json',
          success: function(data) {
            $('#demo').text('Worked!');
            console.log(data);
          },
          error: function(error) {
            $('#demo').text('Error : ' + error);
            console.log(error);
          }
        });
      });
      </script>

    </html>

AJAX.php

<!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Ajax Practice</title>

        <?php
          require("db.php");
         ?>

      </head>
      <body>

      <?php
        if (isset($_POST["id"])) {
          $id = $_POST["id"];
        } else {
          $id = 1;
        }
        $stmt = $conn->prepare("SELECT * FROM projects WHERE id=$id");
        $stmt->execute();
        $all = $stmt->fetchAll(PDO::FETCH_ASSOC);
        $all = json_encode($all);

        echo $all;

       ?>

      </body>

    </html>

这是回声的结果。

   [  
       {  
          "Project":"BPM",
          "Date":"2018-03-02 00:00:00",
          "Manager":"Someone",
          "Status":"2",
          "ID":"1",
          "Counter":null
       }
    ]

一般而言,我对Jquery和Web编程还很陌生。.请告知,我们非常感谢您的帮助。

从AJAX.php中删除所有HTML,然后将以下代码添加到AJAX.php顶部

header('Content-Type: application/json');
<?php
        require("db.php");
        if (isset($_POST["id"])) {
          $id = $_POST["id"];
        } else {
          $id = 1;
        }
        $stmt = $conn->prepare("SELECT * FROM projects WHERE id=$id");
        $stmt->execute();
        $all = $stmt->fetchAll(PDO::FETCH_ASSOC);
        $all = json_encode($all);

        echo $all;

?>

将您的Ajax代码更改为This。 因为这里不需要html内容

您可以使用mysqli_real_escape_string

由于您指定了dataType: 'json'您的js需要json格式。 现在,您将返回包含<head><beody> html标记的标签。

在您的AJAX.php

    <?php
    require("db.php");

    if (isset($_POST["id"])) {
      $id = $_POST["id"];
    } else {
      $id = 1;
    }
    $stmt = $conn->prepare("SELECT * FROM projects WHERE id=$id");
    $stmt->execute();
    $all = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $all = json_encode($all);

    echo $all;
   ?>

您需要在AJAX中解析它。 尝试这个...

$('#button').on('click', function(){
    // var please = 1;
    $.ajax({
      type: 'POST',
      url: 'AJAX.php',
      // data: {id: please},
      dataType: 'json',
      success: function(data) {
        var response = JSON.parse(data);
        $('#demo').text('Worked!');
        console.log(response);
      },
      error: function(error) {
        $('#demo').text('Error : ' + error);
        console.log(error);
      }
    });
  });

暂无
暂无

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

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