Ajax数据元素没有提升

时间:2015-02-04 08:07:39

标签: javascript php ajax

我有一个错误,我确定:

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)          
  { ....

因为当我到达login.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
.....

我在login.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 />

4 个答案:

答案 0 :(得分:1)

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

获取数据

答案 1 :(得分:1)

尝试使用:

 $.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)  {.....

答案 2 :(得分:0)

试试这种方式。我之前遇到过同样的问题,这是我在使用你自己的字符串作为密钥时让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)          
  { ....

答案 3 :(得分:0)

我也遇到同样的问题,使用这种方法$ .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是一个可变的,它在成功后吐出用户名。以下是PHP代码示例。

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

尝试这种方法让我知道它确实解决了你的问题吗?

此致