2017-01-23 24 views
0

我是新手前端,並試圖創建一個登錄頁面,該頁面擁有用戶名和密碼登錄。我想將登錄的用戶名存儲在URL中,因此必須在AJAX調用中使用PUT方法。但是我的登錄總是失敗,因爲我無法在URL中傳遞正確的用戶名屬性,請參閱下面的代碼來引用:如何在使用Ajax調用時將用戶名存儲在URL中

再次如何在URL中傳遞{username},您可以看到下面的URL在我有這個用戶名屬性的ajax調用。

的jQuery:

$("#login-user").validate({ 

     submitHandler: userLogin 

    }); 

    function userLogin() { 
     var data = $("#login-user").serialize(); 


     if (userName != '' && password != '') 
     { 
      $.ajax({ 

       url: 'http://www.website.com/database/tableusers/{username}/login', 
       type: 'PUT', 
       data: data, 

       success: function(data) { 
        if (data == 0) { 

         result.html('<span class="error">Incorrect username or password</span>') 

        } else if (data == 1) { 

         window.location = "tothepage.html"; 

        } else { 

         $("#error").fadeIn(1000, function() { 

          $("#error").html('<div class="alert alert-danger"><span class="glyphicon glyphicon-info-sign"></span> &nbsp; ' + data + ' !</div>'); 

         }); 
        } 
       } 
      }); 
     } 

    } 
+0

你在哪裏定義了'username'?它是未定義的 – baao

+0

使用GET方法發送用戶名到服務器是一個壞習慣。即使您使用HTTPS,用戶名仍然是透明的,可能會導致安全性中斷。爲什麼不使用POST發送用戶名? – ymz

回答

0

您還沒有定義任何userNamepassword。但是,data是正確的。

此外,它可能適合您的後端代碼,但您可能必須使用POSTtype)。

所以,你錯過了這一點:

function userLogin() { 
    var data = $("#login-user").serialize(); 

    var userName=$("#userNameInputID").val(); 
    var password=$("#passwordInputID").val(); 

    if (userName != '' && password != '') 
    { 
     $.ajax({ 

      url: 'http://www.website.com/database/tableusers/'+userName+'/login', //just concatenate userName here (case sensitive) 
      type: 'PUT', 
      data: data, 
.... 
+0

數據變量無效,因爲它沒有存儲任何東西。如何解決@Gabriel – Nancy

+0

不得不添加 var data = $('#user')。val()+''+ $('#pass')。val();它像一個魅力 – Nancy

+0

假設#登錄用戶是你的形式和你的字段被命名,$(「#login-user」)。serialize()'將創建一個對象'{fieldName:fieldValue,。 ..}「這將被髮送到服務器(因爲它被分配給你的ajax調用中的'data'屬性)。 – Gabriel

0

保持用戶名作爲一個變量。

var url = 'http://www.website.com/database/tableusers/'+username+'/login'; 
0

首先構建URL並將其存儲在變量中,然後在AJAX調用中使用該變量。

例如:

var userUrl = 'http://www.website.com/database/tableusers/' + userName + '/login'; 

$.ajax({ 

       url: userUrl, 
       type: 'PUT', 
       data: data, 

       success: function(data) { 
+0

爲什麼他應該先建立網址? – baao

+0

嘿@Jason,非常感謝。如何在此之前存儲變量用戶名,而不是var data = $(「#login-user」)。serialize(); – Nancy

0

你只需要從data對象訪問usernamepassword變量,它們定義爲var小號

function userLogin() { 
    var data = $("#login-user").serialize(); 
    var username = data.username; 
    var password = data.password; 

    if (username != '' && password != '') 
    ... 

此外,您還可以將變量username注入URL中,方法是將其與+字符串運算符

url: 'http://www.website.com/database/tableusers/' + username + '/login'; 
相關問題