这是我的 JS 代码:
$.ajax({
url: 'login.php',
type: 'POST',
data: {
loginName: $("#loginName").val(),
loginPass: $("#loginPass").val()
},
dataType: 'json',
success: function(data){
if(data.success){
$("#Message").fadeIn(function(){
$(this).html(data.message);
});
}
else
{
$("#Message").fadeIn(function(){
$(this).html(data.message);
});
}
}
});
这是 PHP:
<?php
$data = array();
$data['success'] = true;
$data['message'] = "Here is the message";
echo json_encode($data);
?>
如果我有这个就没问题,但是如果我将 php 文件编辑成这样:
<?
include "db.php";
$data = array();
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if($_POST['loginName'] == "" && $_POST['loginPass'] == "")
{
@$v = mysql_query("SELECT * FROM users WHERE name LIKE '$registerName'");
@$p = mysql_num_rows($v);
if ($p == 0){
@$v = mysql_query("INSERT INTO users VALUES('','$registerName','$registerPass')");
$data['message'] = "Byly jste úspěšně zaregistrováni.";
$data['success'] = true;
}
else
{
$data['message'] = "Tento uživatel je tu již zaregistrován.";
$data['success'] = false;
}
echo json_encode($data);
}
?>
ajax 什么都不做……它只是发送数据,但不发送任何警报……:( 如果我只使用 php,我可以控制这个 mysql 事件及其工作...
最佳答案
首先我想欢迎回来小Bobby Tables
现在言归正传,仔细看看下面这行代码:
if($_POST['loginName'] == "" && $_POST['loginPass'] == "")
下一个议程,你的错误抑制不正确,你应该在你的配置文件上使用 error_reporting
来控制你的错误,并使用 error_handler记录您的应用程序的错误。
您还应该注意,如果满足某些条件,您只会响应一个结果,我建议您无论使用什么数据或发布方法,都应响应,为每种可能性提供错误消息,因为在开发阶段,这会使事情变得容易多了。
我会这样写代码:
include "db.php"; //error_reporting(0);
$data = array();
$user_info = array_map("mysql_real_escape_string",$_POST);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(!empty($user_info['loginName']) && !empty($user_info['loginPass']))
{
$v = mysql_query(sprintf("SELECT * FROM users WHERE name LIKE '%s'",$user_info['loginName']));
if(mysql_num_rows($v) > 0)
{
//Update Here
//Output Success here/ json_encode
exit;
}
}
}
//Output Error here/ json_encode
关于php - 我无法返回 MySQL 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4998721/