Php $.ajax Post请求未发送Post数据
我正试图通过使用ajax来处理对服务器的后台请求和表单请求,从而简化我的登录系统。我想将表单数据发布到PHP页面,如果没有传递正确的参数,则返回true/false和“数据不足” 我的问题是,我的AJAX请求没有发送我要发送的数据 下面是我的JavaScript函数:Php $.ajax Post请求未发送Post数据,php,javascript,jquery,ajax,post,Php,Javascript,Jquery,Ajax,Post,我正试图通过使用ajax来处理对服务器的后台请求和表单请求,从而简化我的登录系统。我想将表单数据发布到PHP页面,如果没有传递正确的参数,则返回true/false和“数据不足” 我的问题是,我的AJAX请求没有发送我要发送的数据 下面是我的JavaScript函数: function confirm_login() { val_UName = document.login_form.username.value; val_Pwd = document.login_form.pass
function confirm_login()
{
val_UName = document.login_form.username.value;
val_Pwd = document.login_form.password.value;
var result = null;
var scriptUrl = "login_confirm.php";
$.ajax({
url: scriptUrl,
type: 'post',
data: ({username : val_UName, password : val_Pwd}),
dataType: 'html',
async: false,
success: function(data) {
result = data;
}
});
result = result.split('|');
if(result[1] == 'true')
window.location = "index.php";
else
alert('Could not log you in!\n\n'+result[0]);
}
此函数在表单上提交按钮的onclick事件中调用。现在,我已经在Chrome中使用了调试工具,我知道val_UName和val_Pwd正在获取表单值。因此,这里和登录_confirm.php之间肯定存在故障
为了完整起见,下面是login_confirm.php中发生的事情(我省略了连接到数据库并关闭连接的行):
有人知道这里发生了什么或者以前见过类似的事情吗
另外,我甚至尝试改用GET,但仍然不起作用…不要将数据括在括号中。只要{}就足够了。不要用括号括起数据。只要{}就够了
result = result.split('|');
if(result[1] == 'true')
window.location = "index.php";
else
alert('Could not log you in!\n\n'+result[0]);
在回调返回之前运行
尝试将该逻辑放入成功回调中,或者使用该逻辑定义一个成功函数
在回调返回之前运行
尝试将该逻辑放在成功回调中,或者定义一个包含该逻辑的成功函数。ajax请求下的代码不会等到ajax请求完成后再执行。因此,我认为您的ajax请求正在工作,但是数据没有发生任何变化,因为这段代码已经执行了 我的建议是:
function confirm_login()
{
val_UName = document.login_form.username.value;
val_Pwd = document.login_form.password.value;
var scriptUrl = "login_confirm.php";
$.ajax({
url: scriptUrl,
type: 'post',
data: ({username : val_UName, password : val_Pwd}),
dataType: 'html',
async: false,
success: function(data) {
runCode(data);
}
});
function runCode(var result){
result = result.split('|');
if(result[1] == 'true')
window.location = "index.php";
else
alert('Could not log you in!\n\n'+result[0]);
}
}
}
编辑:函数不应该与其他函数相同,但我认为您可以自己修复它。ajax请求下的代码不会等到ajax请求完成后再执行。因此,我认为您的ajax请求正在工作,但是数据没有发生任何变化,因为这段代码已经执行了 我的建议是:
function confirm_login()
{
val_UName = document.login_form.username.value;
val_Pwd = document.login_form.password.value;
var scriptUrl = "login_confirm.php";
$.ajax({
url: scriptUrl,
type: 'post',
data: ({username : val_UName, password : val_Pwd}),
dataType: 'html',
async: false,
success: function(data) {
runCode(data);
}
});
function runCode(var result){
result = result.split('|');
if(result[1] == 'true')
window.location = "index.php";
else
alert('Could not log you in!\n\n'+result[0]);
}
}
}
编辑:函数不应与其他函数相同,但我认为您可以自己修复。如果$username或$password变量为空字符串,则我的PHP页面只会返回“数据不足”,因此没有。请使用名为Fiddler的工具。它将让您查看所有呼叫的请求数据和响应数据。在请求数据中看到的任何结果都将确认PHP页面正在接收的内容。如果$username或$password变量为空字符串,则我的PHP页面只会返回“数据不足”,因此没有。请使用名为Fiddler的工具。它将让您查看所有呼叫的请求数据和响应数据。在请求数据中看到的任何结果都将确认PHP页面接收到的内容。检查jquery api:它们使用括号,非常好。足够公平-我从未见过。我也觉得奇怪,必须查找以确保其有效。检查jquery api:它们使用括号,它们都很好。很公平-我从来没有见过。我也觉得奇怪,必须查找它以确保它是有效的。操作集
async:false
,所以实际上它应该工作,不是吗?@felix在这种情况下,他真的不应该运行async false。我相信async false用于将Ajax请求排队并按顺序处理它们。否则,回调将被无序调用。只有在绝对必要的情况下才使用async false。是的,我知道它是邪恶的;)但是,我仍然认为调用后的代码会在调用返回后执行。无论如何,我从未使用过async:false,所以这可能就是我不知道的原因;)OP setasync:false
,所以实际上它应该可以工作,不是吗?@felix在这种情况下,他真的不应该运行async false。我相信async false用于将Ajax请求排队并按顺序处理它们。否则,回调将被无序调用。只有在绝对必要的情况下才使用async false。是的,我知道它是邪恶的;)但是,我仍然认为调用后的代码会在调用返回后执行。无论如何,我从未使用过async:false,所以这可能就是我不知道的原因;)