我使用 $_SERVER['PHP_SELF'] 来运行函数,因为它在我的插件页面中包含和调用的方式我无法直接调用functions.php文件,所以我想要做什么现在正在处理注册脚本,问题是我的返回无法按照我想要的方式使用。例如。
public function CheckUserName() {
$query = <<<SQL
SELECT id
FROM {$this->tprefix}accounts
WHERE username = :posteduser
SQL;
$resource = $this->db->db->prepare( $query );
$resource->execute( array (
':posteduser' => $_POST['username'],
));
if($resource->rowCount() == 0 ) {
//Self Continue to run checks
}
else {
echo "1";
}
}
是我的检查,以确保用户名尚未被占用,而如果电子邮件已在使用中,则我的响应将是两个。我的 Ajax 是
$(function() {
$("#register_").submit(function(event) {
event.preventDefault();
var username = $("#username").val();
if(username == "") { $("#unameerror").html("Username is Required"); }
$.ajax({
type: "POST",
url: $("#register_").attr("action"),
data: $("#register_").serialize(),
success: function(data) {
if(data==1) { alert("Username is taken. Please choose another!" };
if(data==2) { alert("Email already registered. Please select lost password
if you have forgotten your password" };
if(data==0) { alert("Account Created!") }; //0 is returned after all checks passed and scripts executed
},
error: function() {
alert("Something isn't right");
}
});
});
});
我的问题是,因为它是从 PHP_SELF 运行的,所以它会输出所有信息(IE <html><title>reg script</title><body><form id = "reg"></form></body><html>
我能想到的最好的方法是如何解析所有数据返回以简单地返回脚本代码?
最佳答案
这适用于我的框架。由于所有内容都包含在 index.php 文件中,然后只是通过变量作为包含内容进行拉取,因此它始终是 index.php 文件 目前是
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once(dirname(__file__).'/config.php');
require_once(dirname(__file__).'/directives.php');
LoadClasses();
$Theme->Load(ACTIVETHEME);
我只是将底部更改为
if(isset($_POST['process'])) {
}
else {
$Theme->Load(ACTIVETHEME);
}
现在加载我的页面没有问题,但是当我执行带有流程输入的表单时( IE <input type="hidden" name="process" id="process" value="register">
)
现在,如果没有执行任何表单,它会加载页面,但由于我希望所有插件都通过 ajax 运行,所以如果发布了进程,那么它只返回 php 脚本数据。
关于javascript - 使用 PHP_SELF 返回单个响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32676244/