我在使用 AJAX 时遇到了非常奇怪的问题。 这是带有 js 代码和 post 方法的文件片段,该方法通过 AJAX 将参数发送到 php 文件:
var params = $('#add').serializeArray();
$.post('code/bg/adding_c.php', params, function(ret) {
//body of success function
}, 'json');
这是 php 代码片段(adding_c.php):
<?php
require "functions.php";
//irrelevant operations
$return = array(
'status' => $status,
'msg' => $msg,
'id' => $id
);
echo json_encode($return);
?>
当我用 require 指令注释或删除该行时,一切正常,但当它处于事件状态时,不会触发成功函数。
- JS post 方法发送正确的参数。
- Php 文件接收它,执行正确的操作并将正确的数据返回给 js 脚本(我可以在 FireBug 中看到它)。
- 成功函数不会被触发。
为什么与AJAX无关的指令会导致这个问题?
编辑。
函数.php:
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'dbname';
$conn = new mysqli($host, $user, $pass, $db);
function querySQL($query)
{
global $conn;
$result = $conn->query($query);
return $result;
}
function cleanSQL($conn, $string)
{
return htmlentities(fixSQL($conn, $string), ENT_COMPAT, 'UTF-8');
}
function fixSQL($conn, $string)
{
if(get_magic_quotes_gpc())
$string = stripslashes($string);
return $conn->real_escape_string($string);
}
function fPassword($pass)
{
$salt1 = 'salt1';
$salt2 = 'salt2';
$token = hash('ripemd128', "$salt1$pass$salt2");
return $token;
}
?>
编辑2。
没有错误,当我将函数从functions.php粘贴到index.php时,一切正常。我现在不知道该怎么办。看来 require word 是一个问题。我无法将这些函数添加到我需要它们的每个文件中。
最佳答案
这可能是 functions.php
中的错误。
编辑:如果您尚未在 php.ini 文件中设置 display_errors = On
,请在代码中使用以下行:
ini_set("display_errors", "1");
error_reporting(E_ALL);
另外,您确定这不是解析/语法错误吗?如果是这种情况,您需要做一些事情:
确保您使用的是检查语法的 IDE(例如 Netbeans)。
将文件分成两个,如下所示:
index.php
<?php
ini_set("display_errors", "1");
error_reporting(E_ALL);
include 'error.php';
error.php
require "functions.php";
//irrelevant operations
$return = array(
'status' => $status,
'msg' => $msg,
'id' => $id
);
echo json_encode($return);
在浏览器窗口中运行它,这应该会让您了解您正在处理的内容。
关于javascript - Ajax 成功函数未使用 require 指令调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38011621/