2015-08-14 75 views
0

實際上它確實,但不是我想要的。jQuery AJAX請求,成功執行但未應用於HTML

$('#progress', this).show(); 
$('#txt', this).hide(); 

$.ajax({ 
    type: "POST", 
    url: "./inviteAdminAddSample.php", 
    data: { 
     rev: rev, 
     aid: aid, 
     rating: rating 
    }, 
    success: function(data) { 
     $('#txt', this).html('Succesfully added!'); // *** 
     $('#txt', this).show(); // *** 
     $('#progress', this).hide(); // *** 
    } 
}); 

那些3線不施加,但如果我把它們的外更迭(盈的請求例如),它的工作原理。

這裏的交易是什麼?

+0

要清楚,console.log可以執行成功。 – zmajeric

+0

你爲什麼試圖將'#txt' ID選擇器的範圍呢?在整個文檔中應該只有一個元素具有給定的ID,所以'$(「#txt」)'應該可以正常工作,不需要第二個參數。如果您嘗試解決重複的ID問題,請先修復該問題,以便通過切換爲使用類名稱來使HTML合法。 – jfriend00

回答

0

this成功回調裏面並不是指你想要的元素。

你可以做到以下幾點:

var element = this; 

$('#progress', element).show(); 
$('#txt', element).hide(); 

$.ajax({ 
    type: "POST", 
    url: "./inviteAdminAddSample.php", 
    data: { 
     rev: rev, 
     aid: aid, 
     rating: rating 
    }, 
    success: function(data) { 
     $('#txt', element).html('Succesfully added!'); // *** 
     $('#txt', element).show(); // *** 
     $('#progress', element).hide(); // *** 
    } 
}); 

但是,如果你正在使用id屬性,我不認爲有必要的第二個參數傳遞給$()功能。如果您id值是唯一的---就像他們應該是---你應該能夠使用:

$('#progress').show(); 
$('#txt').hide(); 

$.ajax({ 
    type: "POST", 
    url: "./inviteAdminAddSample.php", 
    data: { 
     rev: rev, 
     aid: aid, 
     rating: rating 
    }, 
    success: function(data) { 
     $('#txt').html('Succesfully added!'); // *** 
     $('#txt').show(); // *** 
     $('#progress').hide(); // *** 
    } 
}); 
+0

我認爲它的某些相關的「this」不是ajax調用中的同一個對象,但不能管理正確的方式來做到這一點。 謝謝你們兩位! 關於ID情況,就像我使用db中的元素填充表一樣,如果我將它作爲第二個示例,則表中只有第一個元素受到影響。謝謝。 – zmajeric

0

的「本」你的成功裏面的回調是指自己的「本」,而不是一個你正在爲。 試試這個:

var self = this; 
$('#progress',self).show(); 
$('#txt',self).hide(); 

$.ajax({ 
    type: "POST", 
    url: "./inviteAdminAddSample.php", 
    data: {rev: rev, aid: aid, rating: rating}, 
    success: function(data) { 
     $('#txt',self).html('Succesfully added!'); // *** 
     $('#txt',self).show();      // *** 
     $('#progress',self).hide();    // *** 
    } 
}); 

這樣,你先參考保存到「這個」你想要的目標。你可以在你的代碼中使用這個引用,它總是會引用你的意圖。

+0

謝謝。它有幫助。 – zmajeric