【问题标题】:jQuery AJAX get MySQL data returns entirety of index.htmljQuery AJAX 获取 MySQL 数据返回整个 index.html
【发布时间】:2017-05-30 00:54:17
【问题描述】:

相关话题:jQuery Ajax returns the whole page

上面的线程是相关的,这似乎是一个有点常见的问题,但该线程中的答案对我的情况并没有帮助。

当点击我页面上的图像时,会调用一个 jQuery 函数,并且在该函数中是一个 Ajax 声明:

//click an image
$(".img_div").click(function() {

    //get integer stored in alt attribute and pass to variable
    var altCheck = $(this).find('.modal_img').attr('alt');

    //get MySQL data
    $.ajax({

        //php file to grab data
        url: "get.php",
        type: "post",
        datatype: "json",

        //pass above variable to php file
        data:{ ajaxid: altCheck },

        success: function(response){
            //log data to console
            console.log(response);
        },
        error: function(){
            console.log("test");
        }
    });

我现在正尝试将接收到的数据纯粹作为测试记录到控制台中,但我正在将整个 index.html 页面记录到控制台中。

在点击任何图片之前,已与数据库建立连接并存储在变量$db 中。

这是我的 get.php 文件:

<?php

//variable from jQuery
$value = filter_var($_REQUEST["ajaxid"], FILTER_SANITIZE_STRING);
$value = mysqli_real_escape_string($value);

//variable passed to SQL statement
$sql = $conn->prepare("SELECT FROM table WHERE screeningId = ?");
$sql->bind_param("s",$value);

//Get data
$result = mysqli_query($db, $sql);
while ($row = mysqli_fetch_array($result)){
    //output data
    echo $row['url'];
}
?>

【问题讨论】:

  • 第一次识别,你提到的数据类型是“json”,但是你的ajax响应不是json。
  • 我尝试将其更改为“文本”,但结果是一样的。
  • 尝试使用查询字符串在浏览器中直接运行 get.php。例如,http://...../../get.php?ajaxid=sample_value

标签: php jquery mysql ajax


【解决方案1】:

第一次识别,您提到数据类型为“json”,但您的 ajax 响应不是 json。所以试试这样,

<?php

//  Make DB connection variable($conn) available here
//variable from jQuery
$value = filter_var($_REQUEST["ajaxid"], FILTER_SANITIZE_STRING);
$value = mysqli_real_escape_string($conn, $value);

//variable passed to SQL statement
/*$sql = $conn->prepare("SELECT FROM table WHERE screeningId = ?");
$sql->bind_param("s",$value);*/
$sql = "SELECT * FROM table WHERE screeningId = '$value'";
$result = mysqli_query($db, $sql);

//Get data
$result = mysqli_query($db, $sql);
$temp = array();
while ($row = mysqli_fetch_array($result)){
    //output data
    array_push($temp,$row['url']);
}
echo json_encode($temp);
?>

出于调试目的,尝试使用查询字符串在浏览器中直接运行 get.php。例如,http://...../../get.php?ajaxid=sample_value

【讨论】:

  • 谢谢。运行孤立的页面给出了语法错误!好提示。修复然后检查你的代码..
  • 警告:mysqli_real_escape_string() 只需要 2 个参数,给定 1 个
  • 另外,您在 get.php 文件中缺少 mysql 连接。首先使 $conn(DB connection) 变量在 get.php 中可用,并将其传递给 mysqli_real_escape_string() 函数。例如,$conn->real_escape_string($value);或 mysqli_real_escape_string($conn, $value);
  • 是的,我在文件中建立了连接,这似乎可以解决问题。
  • 干杯!! :) (Y)
猜你喜欢
  • 2012-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
  • 2018-09-21
  • 1970-01-01
  • 2018-10-20
相关资源
最近更新 更多