2012-08-22 35 views
-1

我在爲fnamelname等指定值時出現問題,直到成功函數被調用並且它會發布到template/orderForm.php,這些在頁面上不存在。如果我例如console.log(fname)我得到一個空的領域。未賦值的Javascript值

發生的第一件事是在登錄按鈕提交它通過phpscripts/login.php檢查數據庫的信息,它成功後發佈到另一個頁面以獲取表單數據,例如它們的名稱等自動填充php回聲。

$("#loginSubmit").click(function() { 
    var username = $("#username").val(); 
    var password = $("#password").val(); 
    $.ajax({ 
    type: "POST", 
    url: "phpscripts/login.php", 
    dataType: 'text', 
    data: { 
     username: username, 
     password: password 
    }, 
    success: function(data){ 
     if(data == 'worked') { 
     $("#loginForm").hide(500); 
     $("#loginBtn").hide(500); 
     $("#registerBtn").hide(500); 
     $("#forgotPasswordBtn").hide(500); 
     $.post('template/orderForm.php', function(data) { 
      $('#approveData').html(data); 
      $("#updateInfo").click(function() { 
      var fname = $('#fname').attr('value'); 
      var lname = $('#lname').attr('value'); 
      var address = $('#address').attr('value'); 
      var city = $('#city').attr('value'); 
      var state = $('#state').attr('value'); 
      var zip = $('#zip').attr('value'); 
      var phone = $('#phone').attr('value'); 
      console.log(fname); 
      $.ajax({ 
       type: "POST", 
       //change to update script that is in myaccount.php 
       url: "phpscripts/update.php", 
       data: { 
       fname: fname, 
       lname: lname, 
       address: address, 
       city: city, 
       state: state, 
       zip: zip, 
       phone: phone 
       }, 
       success: function(){ 
       //do nothing 
       } 

      }); 
      }); 
     }); 


     } 
     else { 

     } 
    } 

    }); 
}); 
+0

是否有一個原因,爲什麼你不使用$('#fname')。val()在該updateInfo中點擊偵聽器? (順便說一句,這將有助於看到html) –

+0

小費:如果沒有別的東西,你不需要'else' ... – elclanrs

+0

我想出了這個問題,有多個ID是fname,lname等等這個頁面,我一開始並沒有看到它們,因爲它們跨多個php包含。 – Jeff

回答

1

嘗試$('#fname').val()代替$('#fname').attr('value'),並與其他人相同。

+0

我試過用$('#fname').val()和$('#fname')。prop('value') – Jeff

+0

@Jeff你應該使用'.val()'來訪問這個值,使用輸入不會更改屬性「值」的內容。 – xdazz

0

我不知道發生了什麼事情與你的HTML所以這裏是我的猜測:

這條線:

$('#approveData').html(data); 

包含你的HTML裏面有與FNAME的ID的元素。

這JS:

$("#updateInfo").click(function() { ... }); 

應該是這樣的:

$("#updateInfo").live('click', function() { ... }); 

而且在一個現成的語句或某事在外面。未在另一個偵聽器的結果中定義。

此鏈接解釋.live: http://api.jquery.com/live/

它註冊新插入的地方爲你的基本監聽器會向您提供不中頻FNAME元素是由你的要求寫在DOM元素 - 一個假設,所以不要嚷嚷如果我在這裏錯了。

+0

您顯示的'.click(function(){})'和'.on('click',function(){})'語法是等價的。你是否試圖推薦委託事件處理作爲'.on()'的其他語法之一? – nnnnnn

+0

你是對的,如果我現在正確回憶 - .live是我認爲我所指的,因爲點擊將被轉換爲on('click'自動無論如何......但OP說他解決了,所以我想這是現​​在無關 –

+0

'.live()'被棄用 - '.on()'可以做與'.live()'做的相同的事情,如果你傳遞給它正確的參數,jQuery doco涵蓋了細節。 – nnnnnn