2014-08-30 36 views
0

我有一個表單檢查服務器上是否存在文件,如果是,它會將其提供給用戶。這一切都是通過PHP完成的。但是,如果沒有找到該文件,我想爲某些客戶端使用jQuery。這就是爲什麼如果該文件不存在,那麼我調用echo和jquery腳本。問題是,jQuery不會被執行?在php中調用jquery

 if (isset($_POST['download'])) 
    { 

     if (file exists) 
     { 
      //serve it to the user 

     } 
     else 
     { 
      //these lines do not get executed. The page simply reloads after post method 
      echo"<script> 

      $('#collapseOne').show(); 
      var content = $('#s').val(); 
      $('#p').val(content); 

      </script>"; 
     } 
    ?> 

回答

1

把你的腳本中$(function(){});

$(function(){ 
    $('#collapseOne').show(); 
    var content = $('#s').val(); 
    $('#p').val(content); 
}); 

在腳本執行前的DOM準備

0

你要做的JavaScript在Ajax調用成功回調。

success: function(resp) { 
    if(resp == 'false') { 
     $('#collapseOne').show(); 
     var content = $('#s').val(); 
     $('#p').val(content); 
    } 
} 

而在PHP的else語句中,您現在只需返回false。

if(file_exists(...)) { 
    //code 
} else { 
    echo 'false'; 
} 

當然,這只是如果你調用Ajax如果不是你必須提供我們更多的信息,你是如何實際去做應用。

+0

AJAX有哪些提及? – j08691 2014-08-30 22:27:07

+0

@ j08691沒有任何提及他如何做的事情。我想他是用AJAX來做的,否則就沒有任何意義。還有這個評論'//這些行不會被執行。頁面簡單地在post方法後重新加載。 – 2014-08-30 22:30:34

+0

可能只是一個簡單的回發。 – j08691 2014-08-30 22:31:14

0

你是否要做一個完整的頁面重新加載或獲取php腳本的javascript ajax請求? 如果完全重新加載,你已經在提交之前用php解析html文件,所以你不需要使用javascript來操縱,而只需要php來顯示或隱藏html頁面中的元素。

如果它是一個ajax請求(所以不包括你的表單請求的答案),你可以使用回調函數來檢查成功或失敗,並在你的ajax請求後執行javascript(如Charlotte Dunois寫的)。 在這種情況下,您只需使用JavaScript接收頁面,但此javascript不會影響已加載的頁面,而只會影響來自ajax請求的新請求的頁面。這就是爲什麼你沒有得到任何效果。

爲了讓javascript受到ajax響應的影響,您需要將其附加到已加載頁面的dom中。

在一般情況下,我會嘗試從PHP分離JavaScript以保持它全部清潔,所以不要直接從PHP回聲JavaScript代碼包括在頁面中,但只是通知瀏覽器成功或失敗(通過ajax)或放置一個可以通過JavaScript($('#scriptSuccess')。length> 0)找到的頁面上的標籤(例如a)來觸發您的JavaScript腳本。