Ajax post不给php文件赋值,post变成get
Ajax post does not give value to php file, post becomes get
我有这个ajax登录功能。
编辑:我刚刚注意到该服务器运行 php7,而登录有效的其他服务器使用 php5。 php 有什么变化导致此脚本不再有效?
编辑2:看起来服务器请求方法不是post而是改为get,为什么?
解决方案:需要从 url: "./ajaxcall/login.php",
中删除 .php 因为我使用漂亮的 url htaccess.
var InName = $('#InName').val();
var InPass = $('#InPass').val();
alert(InName);
$.ajax({
type: "POST",
url: "./ajaxcall/login.php",
dataType: "json",
data: {InName:InName, InPass:InPass},
error: function (request, error) {
console.log(arguments);
alert("Inlog Can't do because: " + error);
},
success : function(data){
if (data.code == "200"){
$("#InErEr").html(data.msg);
//window.location.reload(true);
} else {
$("#InErEr").html(data.msg);
$('.lds-dual-ring').animate({opacity: 0}, 300);
}
}
});
在 alert(InName);
我得到了正确的用户名值。但是当我检查我的 php 文件时 $_POST['InName']
它是空的。
php 文件的一部分
include('../config.php');
if(empty($_POST['InName'])) {
$Ierror = 'Username is required.';
}
if($_POST['InPass'] == '') {
$Ierror = 'Password is required.';
}
$username = $_POST['InName'];
$passwordL = $_POST['InPass'];
// count user in between //
if($Inlognumber_of_rows == 0) {
$Ierror = 'Username not found.';
} else {
// password check //
if(password_verify($salty_pass, $hashed_password)) {
} else {
$Ierror = 'Password incorrect.';
}
}
if ($Ierror == '') {
// do login //
} else {
$showerror = '<span style="color:#F00;">'.$Ierror.$username.$passwordL.$_POST['InName'].$_POST['InPass'].'</span>';
echo json_encode(['code'=>404, 'msg'=>$showerror]);
exit;
}
在 return 消息中,我只得到 $showerror,未找到用户名,没有 posted 值。因此,由于空值,登录无法正常工作?当然,用户也存在于数据库中。我也没有收到空的 $_POST 错误。所以总而言之,在 javascript 中我得到了 InName 的正确值,但在 php.
中却没有
你很接近,但你的错误捕捉不正确......试试这个(Jquery):
var InName = 'something';
var InPass = 'morething';
$.post("./ajaxcall/login.php", {
InName: InName,
InPass: InPass
}, function(data, status) {
console.log(data, status);
}).done(function() {
alert("second success");
})
.fail(function() {
alert("error");
})
.always(function() {
alert("finished");
});
在你的 php 文件上做 print_r($_POST);你会在你的控制台中收到这个...:[=13=]
Array
(
[InName] => something
[InPass] => morething
)
success
基本上你试图打印错误,你应该在其中安慰记录 request.responeText...
知道 post 是否到达 php 的一个好技巧是在 php 文件中这样做:
<?php
print_r($_POST) ;
$newfile = fopen('newfile.txt','a');
fwrite($newfile,json_encode($_POST));
fclose($newfile);
这将打印 post 数据并将其存储在本地文件中....
解决方案:需要从 url 中删除 .php:“./ajaxcall/login.php”,因为我使用漂亮的 url htaccess。
我有这个ajax登录功能。
编辑:我刚刚注意到该服务器运行 php7,而登录有效的其他服务器使用 php5。 php 有什么变化导致此脚本不再有效?
编辑2:看起来服务器请求方法不是post而是改为get,为什么?
解决方案:需要从 url: "./ajaxcall/login.php",
中删除 .php 因为我使用漂亮的 url htaccess.
var InName = $('#InName').val();
var InPass = $('#InPass').val();
alert(InName);
$.ajax({
type: "POST",
url: "./ajaxcall/login.php",
dataType: "json",
data: {InName:InName, InPass:InPass},
error: function (request, error) {
console.log(arguments);
alert("Inlog Can't do because: " + error);
},
success : function(data){
if (data.code == "200"){
$("#InErEr").html(data.msg);
//window.location.reload(true);
} else {
$("#InErEr").html(data.msg);
$('.lds-dual-ring').animate({opacity: 0}, 300);
}
}
});
在 alert(InName);
我得到了正确的用户名值。但是当我检查我的 php 文件时 $_POST['InName']
它是空的。
php 文件的一部分
include('../config.php');
if(empty($_POST['InName'])) {
$Ierror = 'Username is required.';
}
if($_POST['InPass'] == '') {
$Ierror = 'Password is required.';
}
$username = $_POST['InName'];
$passwordL = $_POST['InPass'];
// count user in between //
if($Inlognumber_of_rows == 0) {
$Ierror = 'Username not found.';
} else {
// password check //
if(password_verify($salty_pass, $hashed_password)) {
} else {
$Ierror = 'Password incorrect.';
}
}
if ($Ierror == '') {
// do login //
} else {
$showerror = '<span style="color:#F00;">'.$Ierror.$username.$passwordL.$_POST['InName'].$_POST['InPass'].'</span>';
echo json_encode(['code'=>404, 'msg'=>$showerror]);
exit;
}
在 return 消息中,我只得到 $showerror,未找到用户名,没有 posted 值。因此,由于空值,登录无法正常工作?当然,用户也存在于数据库中。我也没有收到空的 $_POST 错误。所以总而言之,在 javascript 中我得到了 InName 的正确值,但在 php.
中却没有你很接近,但你的错误捕捉不正确......试试这个(Jquery):
var InName = 'something';
var InPass = 'morething';
$.post("./ajaxcall/login.php", {
InName: InName,
InPass: InPass
}, function(data, status) {
console.log(data, status);
}).done(function() {
alert("second success");
})
.fail(function() {
alert("error");
})
.always(function() {
alert("finished");
});
在你的 php 文件上做 print_r($_POST);你会在你的控制台中收到这个...:[=13=]
Array
(
[InName] => something
[InPass] => morething
)
success
基本上你试图打印错误,你应该在其中安慰记录 request.responeText...
知道 post 是否到达 php 的一个好技巧是在 php 文件中这样做:
<?php
print_r($_POST) ;
$newfile = fopen('newfile.txt','a');
fwrite($newfile,json_encode($_POST));
fclose($newfile);
这将打印 post 数据并将其存储在本地文件中....
解决方案:需要从 url 中删除 .php:“./ajaxcall/login.php”,因为我使用漂亮的 url htaccess。