Ajax 数据元素未拾取


Ajax data element not picking up

我在这里有一个错误,我确定:

var username  = $("#username").val();
var password  = $("#password").val();
var login  = $("#login").val();
var remember  = $("#remember").val();
console.log(username, password, login, remember);  //this shows up fine
$.ajax({     
  url: 'php/login.php',                        
  //here i think
  data: {username:username,password:password,login:login,remember:remember}, 
  type: 'POST',    
  dataType: 'application/json',                   
  success: function(data)          
  { ....

因为当我进入登录名时.php我在行上得到未定义的索引:

 <?php
 $username = $_POST['username'];  //here
 $password = $_POST['password'];  //here
if ($_POST['login']) //check if the submit button is pressed
{
   $remember = $_POST['remember']; and here
.....

我返回登录.php再往下:

 echo json_encode("true"); //or "false" 

在 Firebug 的响应窗格中:

 <br />
<b>Notice</b>:  Undefined index: username in         <b>C:'xampp'htdocs'www'php'login.php</b> on line <b>5</b><br />
<br />
 <b>Notice</b>:  Undefined index: password in <b>C:'xampp'htdocs'www'php'login.php</b> on line <b>6</b><br />
 123123123<br />
 <b>Notice</b>:  Undefined index: login in  <b>C:'xampp'htdocs'www'php'login.php</b> on line <b>8</b><br />

尝试使用 php://input这允许您读取原始数据。由于您使用的是应用程序/json,因此您必须获取原始数据

尝试使用:

 $.ajax({ 
        url: 'php/login.php',
        data: JSON.stringify({'username':'username','password':'password','login':'login','remember':'remember'}),    
        type: 'POST',    
        dataType: 'json',   
        contentType: "application/json",                
        success: function(data)  {.....

使用此方法 $.ajax 并传递所有内容也遇到了同样的问题:分开,但我如何使用以下代码片段来解决这个问题。

 <script type="text/javascript">
$(function(){
    $('#submit').on('click',function(){
        var formdata ={
            username:$('#username').val(),
            password:$('#password').val(),
            message:$('#message').val(),
            submit:$('#submit').val()
        };
        var url=$('form').attr('action');
        console.log(url);
        console.log(formdata);
        var posting = $.post(url,formdata);
        posting.success(function(data){
            $('.success').empty().append(data.username);
          });
       });
    });
</script>

在此代码段中,.success 是一个 vriable,它在成功后吐出用户名。 以下是示例 PHP 代码。

  <?php
    foreach($_POST as $key => $val)
    {
        $result[$key] = $val;
    }
     header('Content-Type: application/json');      
     echo json_encode($result);
 ?>

尝试此方法,让我知道它确实解决了您的问题?

问候

试试这个方式。我之前遇到过同样的问题,这是当您使用自己的字符串作为键时,我可以让 JQuery 正确发送键/值对的唯一方法。

var username  = $("#username").val();
var password  = $("#password").val();
var login  = $("#login").val();
var remember  = $("#remember").val();
$.ajax({     
  url: 'php/login.php',                        
  data: "username="username + "&password="+password + "&login="+login + "&remember="+remember, 
  type: 'POST',    
  dataType: 'json',                   
  success: function(data)          
  { ....