2014-03-31 92 views
0

我有一個腳本,從名爲防護面板的div容器中抓取輸入文本字段。 我正在做一個ajax後調用這個文本字段在後端進行檢查。 如果一個人輸入正確的密碼,那麼我們取消隱藏另一個div容器面板。Jquery ajax後返回數據,未捕獲ReferenceError:數據未定義

<script type="text/javascript"> 

$("#protectivepanel").submit(function(event) { 

    $.ajax({ 
     type: "POST", 
     url: "https://stackoverflow.com/users/trial_signup_validation", 
     data: $("#protectivepanel").serialize(), 
     success: function(data){ 
      console.log('data request succeeded'); 
      return data 
     } 
    }); 
    event.preventDefault() 
}); 


$(document).ready(function(){ 
    $("#the_submit_button").click(function(event){ 
     event.preventDefault(); 
     console.log('event.preventDefault'); 
     if (data.success){ 
      console.log('data'); 
      $("#protectivepanel").hide() 
      $("#salespanel > div").removeClass("hide") 
     } 
     else { 
      $("#protectivepanel").show() 
     } 
    }); 
    }); 
</script> 

這裏是與

def trial_signup_validation 
    @password = params['password'] 
    if @password == 'sales' 
     render :json => { "success" => "true" } 
    else 
     render :json => { "success" => "false" } 
    end 
    end 

檢查方法,現在我想將它傳回的JSON數據,如果它成功了,然後我們取消隱藏在腳本面板。

我的鉻控制檯有這個當我輸入我的文本框中輸入「銷售」,並點擊提交

Uncaught ReferenceError: data is not defined 

這裏是我的形式,如果需要

<div class="container" id="protectivepanel"> 
    <form role="form"> 
    <div class="form-group"> 
     <label for="representativepassword">Representative's Password</label> 
     <input type="text" class="form-control" id="representativepassword" placeholder=" Enter Password"> 
     <button type="submit" class="btn btn-default" id="the_submit_button">Submit</button> 
    </div> 
    </form> 
</div> 

我不明白,如果我我正確地做回調。我的服務器日誌沒有顯示ajax post調用。我如何知道我獲得了正確的返回數據?

+0

你不能從異步函數中'返回數據'。您需要使用回調或承諾界面。 – Andy

回答

1

e.preventDefault in #the_submit_button的點擊事件阻止提交實際進行ajax調用的表單。由於submit事件綁定在document.ready之外,因此可能沒有任何約束。

最後,你不能從ajax回調中返回。任何依賴回調結果的東西都必須在回調的範圍內完成。修復這三樣東西:

  1. 不要preventDefault提交按鈕點擊事件
  2. 確保#protectivepanel在綁定到它的存在。
  3. hide/removeClass功能移入您的success回調函數。您可能還想提供一個error回調。
+0

我想我已經想通了,不要使用提交表單並將所有內容都包含在點擊事件中。 – Jngai1297

+0

@ Jngai1297要小心,因爲可能有其他方式提交表單 –

相關問題