2016-04-27 21 views
0

我的Ajax功能不返回任何結果阿賈克斯不返回任何結果

<div id="container">     
    <div id="connexion"> 
     <form method="post" action=""> 
      <input type="text" id="login"> 
      <input type="password" id="password"><br /> 
      <input name="Submit" type="submit" id="ok" value="OK" class="btn "><br /><br /> 
      <span id="errormess"></span> 
     </form > 
    </div> 
</div> 
$(document).ready(function(){ 
    $("#ok").click(function() { 
     var login = $("#login").val(); 
     var password = $("#password").val(); 
     var dataString = 'login='+ login + '&password=' + password; 
     $.ajax({ 
      type: "POST", 
      url: 'login.php', 
      data: dataString, 
      dataType: "json", 
      success: function(data) { 
       if (data == 0) { 
        $('#errormess').html("problem"); 
       } else { 
        $('#errormess').html(data); 
       } 
      }//success 
     });//ajax 
     return false; 
    });//ok 
});//document 
$sql = "SELECT * FROM utilisateurs WHERE login ='$login' AND password=$password'"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
     $userId= $row["id"]; 
     $today=time(); 
     $week=strftime('%W',$today) ; 
    } 
    $arr = array(
     'userId' => $userId, 
     'week' => $week, 
    ); 
    echo json_encode($arr);  
} 
+1

更改';'to';' – Max

+0

@Max他不在聽提交事件,也沒有阻止它,它會重新加載頁面,js不會執行 –

+0

請使用PHP的[在函數中](http://jayblanchard.net/proper_password_hashing_with_PHP.html)來處理密碼安全性。如果您使用的PHP版本低於5.5,則可以使用'password_hash()'[兼容包](https://github.com/ircmaxell/password_compat)。確保你[不要逃避密碼](http://stackoverflow.com/q/36628418/1011527)或在哈希之前使用其他任何清理機制。這樣做*更改密碼並導致不必要的附加編碼。 –

回答

0

我認爲你是錯給的數據參數。它應該像

var dataString = {"login": login, 
        "password": password} 

HTML

<div id="container">     
     <div id="connexion"> 
      <form method="post" action=""> 
       <input type="text" id="login"> 
       <input type="password" id="password"> 
       <br /> 
     <input name="Submit" type="button" id="ok" value="OK" class="btn ">;  
       <br /> <br /> 
       <span id="errormess"></span> 
      </form > 
     </div> 
    </div> 

JS

$(document).ready(function(){ 
     $("#ok").click(function(e) { 
       e.preventDefault(); 
       var login = $("#login").val(); 
       var password = $("#password").val(); 
       var dataString = {"login": login, 
        "password": password} 
       $.ajax({ 
        type: "POST", 
        url: 'login.php', 
        data: dataString, 
        dataType: "json", 
        success: function(data) { 
        if (data == 0) { 
          $('#errormess').html("problem"); 
        } else { 
          $('#errormess').html(data); 
        } 
        }//success 
       });//ajax 
       return false; 
      });//ok 
    });//document 

而且從submit改變輸入類型爲button,並有在你的JS e.preventDefault()

+1

爲'data'提供一個對象很好。事實上,它更好,因爲它意味着這些值將被編碼爲URL安全。 –

1

問題是因爲按鈕點擊以標準方式提交表單,這意味着您的AJAX請求無法完成。最好練習事件form

另請注意,您的PHP代碼將永遠不會返回0,如果AJAX未按預期完成,最好有error處理程序。最後,你目前的代碼可以廣泛應對,您應該着眼於使用SSL並使用預準備語句來避免SQL注入。

這就是說,這裏是你的AJAX問題的解決辦法:

<div id="container">     
    <div id="connexion"> 
     <form id="myform" method="post" action=""> 
      <input type="text" id="login"> 
      <input type="password" id="password"><br /> 
      <input name="Submit" type="submit" id="ok" value="OK" class="btn "><br /><br /> 
      <span id="errormess"></span> 
     </form> 
    </div> 
</div> 
$("#myform").submit(function(e) { 
    e.preventDefault(); // stop standard form submission 

    $.ajax({ 
     type: "POST", 
     url: 'login.php', 
     data: { 
      login: $("#login").val(), 
      password: $("#password").val() 
     }, 
     dataType: "json", 
     success: function(data) { 
      $('#errormess').html(data); 
     } 
     error: function() { 
      $('#errormess').html("problem"); 
     } 
    }); 
}); 
0

javascript代碼:

$(document).ready(function(){ 
     $("#ok").click(function(e) { 
      e.preventDefault(); 
      var data = (this.form).serialize(); // added code 
      $.ajax({ 
       url: 'login.php', 
       data: data, 
       dataType:'json', 
       type:'POST', 
       async:false, 
       success: function(data) {  
        if (data.success == 0) { // added code 
         $('#errormess').html("problem"); 
        } else { 
         $('#errormess').html(data); 
        } 
       }, 
       error: function(data) { // if error occured 

       } 
      }); 
     });//ok 
    });//document 

PHP代碼:

$sql = "SELECT * FROM utilisateurs WHERE login ='$login' AND  
password=$password'"; 
$result = $conn->query($sql); 
if ($result->num_rows > 0) { 
    while ($row = $result->fetch_assoc()) { 
     $userId = $row["id"]; 
     $today = time(); 
     $week = strftime('%W', $today); 
    } 
    $arr = array(
     'userId' => $userId, 
     'week' => $week, 
    ); 
    echo json_encode($arr); 
} else { // added code 
    $arr = array("success" => '0'); 
    echo json_encode($arr); 
} 

請確認。我修改了PHP以及jQuery代碼的響應。