2010-02-18 117 views
0

我試圖讓下面的代碼只顯示在特定頁面上,但是當我點擊某些頁面,比如主頁或者其他任何不使用這段代碼的頁面時,我會得到如下警告(「發生了一些錯誤,請稍後再試」);。JQuery警報問題?

如何在不使用此JQuery代碼的頁面上顯示警告框並仍然有代碼工作?

我正在使用JQuery,PHP & MySQL。

這裏是JQuery代碼。

$(document).ready(function() { 

    // get average rating 
    getRatingText(); 
    // get average rating function 
    function getRatingText(){ 
     $.ajax({ 
      type: "GET", 
      url: "../../../update.php", 
      data: "do=getavgrate", 
      cache: false, 
      async: false, 
      success: function(result) { 
       // add rating text 
       $("#rating-text").text(result); 
      }, 
      error: function(result) { 
       alert("some error occured, please try again later"); 
      } 
     }); 
    } 

    // get current rating 
    getRating(); 
    // get rating function 
    function getRating(){ 
     $.ajax({ 
      type: "GET", 
      url: "../../../update.php", 
      data: "do=getrate", 
      cache: false, 
      async: false, 
      success: function(result) { 
       // apply star rating to element dynamically 
       $("#current-rating").css({ width: "" + result + "%" }); 
       // add rating text dynamically 
       $("#rating-text").text(getRatingText()); 
      }, 
      error: function(result) { 
       alert("some error occured, please try again later"); 
      } 
     }); 
    } 


    // link handler 
    $('#ratelinks li a').click(function(){ 
     $.ajax({ 
      type: "GET", 
      url: "../../../update.php", 
      data: "rating="+$(this).text()+"&do=rate", 
      cache: false, 
      async: false, 
      success: function(result) { 
       // remove #ratelinks element to prevent another rate 
       $("#ratelinks").remove(); 
       // get rating after click 
       getRating(); 
      }, 
      error: function(result) { 
       alert("some error occured, please try again later"); 
      } 
     }); 

    }); 
}); 
+0

是否有一個PHP代碼可以做到這一點,因爲我在我的PHP包含這個代碼。 – gReEdY 2010-02-18 22:15:57

回答

1

試試這個,使用if來檢查id="rating-text"元素有:

$(document).ready(function() { 

    if($("#rating-text").length) { 
     // get average rating 
     getRatingText(); 
     // get current rating 
     getRating(); 
    } 
    // get average rating function 
    function getRatingText(){ 
     $.ajax({ 
      type: "GET", 
      url: "../../../update.php", 
      data: "do=getavgrate", 
      cache: false, 
      async: false, 
      success: function(result) { 
       // add rating text 
       $("#rating-text").text(result); 
      }, 
      error: function(result) { 
       alert("some error occured, please try again later"); 
      } 
     }); 
    } 

    function getRating(){ 
     $.ajax({ 
      type: "GET", 
      url: "../../../update.php", 
      data: "do=getrate", 
      cache: false, 
      async: false, 
      success: function(result) { 
       // apply star rating to element dynamically 
       $("#current-rating").css({ width: "" + result + "%" }); 
       // add rating text dynamically 
       $("#rating-text").text(getRatingText()); 
      }, 
      error: function(result) { 
       alert("some error occured, please try again later"); 
      } 
     }); 
    } 


    // link handler 
    $('#ratelinks li a').click(function(){ 
     $.ajax({ 
      type: "GET", 
      url: "../../../update.php", 
      data: "rating="+$(this).text()+"&do=rate", 
      cache: false, 
      async: false, 
      success: function(result) { 
       // remove #ratelinks element to prevent another rate 
       $("#ratelinks").remove(); 
       // get rating after click 
       getRating(); 
      }, 
      error: function(result) { 
       alert("some error occured, please try again later"); 
      } 
     }); 

    }); 
}); 
0

您正在爲每個文檔調用函數,因爲它們不是由特定選擇器觸發的。爲什麼不簡單地將這些調用移除到$('#ratelinks li a')之外的getRating()和getRatingText()。click()?

0

怎樣纔可以有代碼不顯示 網頁上的警告框不使用 這個jQuery代碼並仍然有 代碼工作?

他們確實使用它,這就是問題所在。一種選擇是將所有內容都移到一個函數中,只需要在需要此代碼運行的頁面中調用javascript函數。如果你有一個php頭像header.inc,你需要傳遞一些參數到你的頭上,並且只在你需要的時候調用這個函數。

0

Tbere有不同的方法解決這個問題:

  1. 通過<script src='' />嘗試將代碼插入到一個js文件,包括它與PHP的幫助。
  2. 爲每個應包含此腳本的頁面使用開關。
  3. 使用絕對網址代替update.php而不是相對的網址。

對於我想象中的你,你需要編號2.在幾分鐘後會發佈代碼。