编辑:问题是我试图以使用框架时调用函数的方式调用函数。而且,我甚至懒得提一些非常重要的事情,例如我没有使用这个框架。
正如我的同事所指出的,这里应该能够提供帮助。 http://www.php.net/manual/en/language.oop5.basic.php
问题: 我尝试了其他用户建议的多种方式,但json仍然返回NULL或空白。这是我的代码,我已经注释掉的那些是我尝试但失败的那些。现在我知道曾经有过像我这样的帖子,但没有一个对我有用。提前谢谢大家。
编辑:我正在使用chrome,当我使用F12时,转到网络,我可以看到访问函数login()并且我传递的数据也在那里。但是,当我尝试打印字符串和/或die()/ exit()时,响应仍然给我'此请求没有数据可用'。这是什么意思?我最初在没有进行任何查询的情况下对此进行了测试,但仍然返回NULL。我想我的问题得到了投票,因为我的查询似乎出现了错误,所以我只想清除它。我已经处理了这个问题2天了,我已经尝试了很多东西,我确信这不是查询。
public static function login()
{
// header("Content-Type: application/json");
// header("Content-Type: text/javascript");
$response->msg = '';
$username = $_POST['username'];
$password = $_POST['password'];
$hashed = hash('md5', $password);
$query = mysql_query("select * from tbl_user where username = '$username' and password = '$hashed'");
$result = mysql_fetch_object($query);
if(mysql_num_rows($result) > 0)
{
$response->msg = 1;
$response->username = $username;
// $response['msg'] = 1;
// $response['username'] = $username;
echo json_encode($response);
}
else
{
// $response['msg'] = 0;
$response->msg = 0;
echo json_encode($username);
}
}
的Javascript
$("#btn_submit").click(function(){
var username = $("#txtusername").val();
var password = $("#mypassword").val();
$.ajax({
url: base_url + 'includes/main.php/login',
data: { username: username, password: password },
type: 'post',
// async:false,
dataType: 'json',
success: function(data)
{
console.log(data);
}
});
});
// $('#btn_submit').click(function() {
// var username = $("#txtusername").val();
// var password = $("#mypassword").val();
//
// $.getJSON(base_url + 'includes/main.php/login',
// { username: username, password: password },
// function(json) {
// console.log(json);
// });
// });
// $('#btn_submit').click(function() {
// var username = $("#txtusername").val();
// var password = $("#mypassword").val();
//
// $.post(base_url + 'includes/main.php/login',
// {username: username, password: password},
// function(r) {
// console.log(r);
// }, "json");
// });
答案 0 :(得分:1)
我认为这不是关于json的问题。你的代码输出没有任何可能是因为一个错误,并且一般不会通过php报告数据库错误,endyourif的解决方案应该可以解决你的问题。
答案 1 :(得分:1)
据我所知,你并没有指定你使用过任何框架,你试图通过AJAX网址调用php方法
如果login()
是控制器方法
url: base_url + 'includes/main.php/login',
但你不能这样做,试试以下
在javascript中
$("#btn_submit").click(function(){
var username = $("#txtusername").val();
var password = $("#mypassword").val();
$.ajax({
url: base_url + 'includes/main.php',
data: { action:'login', username: username, password: password },
type: 'post',
dataType: 'json',
success: function(data)
{
console.log(data);
}
});
return false;
});
在php中
if(isset($_POST['action']) && $_POST['action'] == 'login') {
login();
}
function login()
{
header("Content-Type: application/json");
$response->msg = '';
$username = $_POST['username'];
$password = $_POST['password'];
// Do the rest ............
}
答案 2 :(得分:0)
编辑:
也可能是AJAX因为导致PHP脚本失败而被发送的问题:
$.ajax({
url: base_url + 'includes/main.php/login',
data: { username: username, password: password },
// async:false,
type: 'post',
dataType: 'json',
success: function(data)
{
console.log(data);
}
});
您的查询中可能出现错误:
$query = mysql_query("select * from tbl_user where username = $username and password = $hashed");
$ username和$ password需要用单引号括起来:
$query = mysql_query("select * from tbl_user where username = '$username' and password = '$hashed'");
我猜你得到null的原因是一个错误正在静默生成。
尝试在查询后添加或者死亡():
$query = mysql_query("select * from tbl_user where username = $username and password = $hashed") or die('Query error');