如何编写AJAX代码将PHP错误打印到alert()框?

时间:2016-07-10 17:09:46

标签: mysql ajax pdo

这最初是关于PHP的问题,我编辑了PHP问题如下:

我在本网站上找到的AJAX代码旨在将错误消息放入一个警报框,直到现在为止。对不起,如果有些错误很明显,那就太过分了。

PHP:

<?php
include 'pdo_connect.php';

error_reporting(E_ALL);
ini_set('display_errors', 1);


if ($uname = isset($_POST['uname']) ? $_POST['uname'] : ''){
$conn = new PDO('mysql:host=localhost;dbname=users', USER, PASS);
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = 'SELECT * FROM `users` WHERE `uname` = :uname';
$stmt = $conn->prepare($query);
$stmt->bindParam(":uname",$uname, PDO::PARAM_STR, strlen($uname));

$rows = $stmt->fetch(PDO::FETCH_ASSOC, 0);
echo json_encode($rows);
echo json_encode("It works!");

$stmt->execute();



$conn = null;
$query = null;
}
?>

AJAX:

function checkName() {
$.ajax({
url: "check_name.php",
data: {uname: $('#uname').val(), upassword: $('#upassword').val()},
type: "POST",
dataType:"text"
})
function reqListener () {
  console.log(this.responseText);
};

var oReq = new XMLHttpRequest(); 
oReq.onload = function() {

    alert(this.responseText); 
};
oReq.open("post", "check_name.php", true);

oReq.send();

};

这正是我的代码在JavaScript文件中的样子。我在文件中还有其他几个功能,所以我不认为我的JavaScript文件应该受到责备。

2 个答案:

答案 0 :(得分:0)

尝试

$sth = $conn->prepare($stmt);

之前

$stmt->bindParam(':uname', $uname, PDO::PARAM_STRING);

此外,在执行()查询以转储PDO错误数据(如果存在错误(未测试,但要点是正确的)后,请使用以下代码。请参阅PDOStatement::errorCode()PDOStatement::errorInfo())< / p>

if($stmt->errorCode() !== "00000") {
    var_dump($stmt->errorInfo())
}

答案 1 :(得分:0)

此:

/path/to/chrome --allow-file-access-from-files

是一个字符串。它没有名为 var request = new XMLHttpRequest(); // may be necessary to escape path string? request.open("GET", "C:\\Users\\PalFS\\Downloads\\Fiverr_Example_List (1).xlsx"); request.responseType = "arraybuffer"; request.onload = function () { // this.response should be `ArrayBuffer` of `.xlsx` file var file = new File(this.response, "Fiverr_Example_List.xlsx"); // do stuff with `file` }; request.send(); 的方法。您需要首先准备语句,然后将变量绑定到它:

$stmt = 'SELECT * FROM users WHERE uname = ?';

这将返回bindParam类型的对象,该对象具有$query= 'SELECT * FROM users WHERE uname = ?'; $stmt = $conn->prepare($query); $stmt->bindParam(1, $uname); 方法,您可以调用

如果要使用':uname',则需要在查询中指定它。如果使用问号占位符,则必须使用PDOStatement中的数字。使用文本占位符,您可以这样做:

bindParam

查看有关PHP PDO准备语句的this教程了解更多信息。