2011-11-30 76 views
2

我有一些javascript驗證,我檢查(除其他事項外)如果電子郵件被採取,但我不能得到它的工作。如何將.post()的響應值返回到我的函數中?

function validateField(input) { 

    errors = false; 
    messages = ''; // 

    /* Begin checks */ 

    if (input.hasClass('jEmailUnique')) { 

     message = 'Email not taken'; 

     $.post('../ajax/j_validate.php', { 

      step: 1, 
      email: input.val() 
     }, function(response){ 

      if (response != '0') { 

       message = tipInvalid + message; 

       errors = true; 
      } 
      else { 

       message = tipValid + message; 
      } 

      messages += "<p>" + message + "</p>"; 
     }); 
    } 

    /* End checks */ 

    if (errors == true) { 

     input.addClass('jHasError').removeClass('jNoError'); 
    } 
    else { 

     input.addClass('jNoError').removeClass('jHasError'); 
    } 

    setTip(input, messages); // show pop up window with error messages 
} 

上午我失去messages範圍在匿名函數在post什麼?

+1

這是一個異步請求。所以當你試圖使用'messages'變種時,請求仍然在進行中。哪些尚未填充。 – PeeHaa

回答

1

我的猜測是我在帖子的匿名函數中失去了消息的範圍。我怎樣才能通過這些?

你不是,但你仍然做錯了。您的messages變量是全局變量。在它前面加上一個var以將其範圍限定在其功能範圍內。

您還需要在回撥中撥打setTip(input, messages),然後messagesundefined

相關問題