Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php $.ajax Post请求未发送Post数据_Php_Javascript_Jquery_Ajax_Post - Fatal编程技术网

Php $.ajax Post请求未发送Post数据

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

我正试图通过使用ajax来处理对服务器的后台请求和表单请求,从而简化我的登录系统。我想将表单数据发布到PHP页面,如果没有传递正确的参数,则返回true/false和“数据不足”

我的问题是,我的AJAX请求没有发送我要发送的数据

下面是我的JavaScript函数:

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 set
async:false
,所以实际上它应该可以工作,不是吗?@felix在这种情况下,他真的不应该运行async false。我相信async false用于将Ajax请求排队并按顺序处理它们。否则,回调将被无序调用。只有在绝对必要的情况下才使用async false。是的,我知道它是邪恶的;)但是,我仍然认为调用后的代码会在调用返回后执行。无论如何,我从未使用过async:false,所以这可能就是我不知道的原因;)