2009-08-04 67 views
0

我不知道如何問這個問題,這就是爲什麼我要模擬我需要什麼,一些開發人員通過使用php呈現JavaScript來製作我需要的東西。一個簡單的示例文件看起來像:如何獲得serverside信息到JavaScript?

my_javascript_file.php

<?php include "my_class.php"; ?> 

$(document).ready(function(){  

    $.ajax({ 
    url: "<?php $my_obj->post_url(); ?>", 
    success: function(){ 
     alert("Post successful") 
    } 
    }); 
};  

它輸出以下內容:

$(document).ready(function(){  

    $.ajax({ 
    url: "/post_handler.php", 
    success: function(){ 
     alert("Post successful") 
    } 
    }); 
};  

我的問題來了那裏,有沒有什麼辦法來實現,與純JS技術?

謝謝, 思南。

P.S.這是當然,我可以在這裏進行硬編碼後的網址,或者通過位置對象等使用javascript我希望你明白我的意思得到URL的只是一個簡單的例子...

編輯:對不起由混亂我使用的術語,它只是從我的應用程序獲取一些信息並動態寫入我的JavaScript。我不是說彗星或數據編碼等。

我想知道的是如何在JavaScript文件上使用服務器端數據(如果有任何方法的話)。就像我的例子中的php方法一樣,它只是迴應一個來自我的應用程序的字符串。有沒有一種方法可以通過JavaScript庫或框架來做到這一點,就像您在模板系統中分配變量並使用它的模板引擎一樣。希望現在更清楚。

+0

達到什麼樣的?請詳細說明。 – 2009-08-04 19:34:47

+0

@Artem,我試圖解釋更多,希望現在更容易理解。 – Sinan 2009-08-04 20:04:03

+0

不是。服務器端是服務器端,客戶端是..好吧,你明白了。如果你想讓服務器端的數據在客戶端上可用,你的方法很好,Chris Holland和David Archer的方法實際上只是它的一個變種(它仍然將PHP與JS混合在一起)。如果你想讓所有的東西都乾淨整潔,那麼你需要在客戶端代碼中從服務器中拉出數據。 – montrealist 2009-08-04 21:09:54

回答

1

是的,有一種方法,但它的奇怪。您可以使用jaxer server。它可以讓你在服務器上運行JavaScript。

編輯:

正如我在我的評論說,我不認爲你想被下載額外的JS給客戶端,以實現一個模板引擎。它可能是你正在談論的分離或解耦。在這種情況下,您可以在單獨的js文件中擁有以下內容:

var myObject = { 
var1 : '', 
var2 : 0, 
init : function(options) { 
    var1 = options.var1; 
    var2 = options.var2; 

    $('#someElem').click(function() { 
     // do stuff 
     return false; 
    }; 
} 

};

,然後調用它從你的HTML頁面

<head> 
<script type="text/javascript"> 
    var options = { 
     var1 : <?php echo "hello" ?>, 
     var2 : <?php echo 1 ?> 
    } 
    myObject.init(options); 
... 
1

我不知道我知道你所說的「推」的意思...如果它是一個真正的server push,你應該看看comet服務器...

還,我現在還不清楚什麼是「純JS技術「是......你可以在沒有jQuery的情況下做到這一點......但純粹的JS,因爲主要用於操縱DOM的語言當然不夠用......你需要類似AJAX的方法......但是,爲推動在HTML5的建議,但是,是this is gonna take some time ...

,所以我希望這可以幫助...但也許你應該澄清你的問題一點,我相信你會得到更好的答案... :)

格爾茨

back2dos

+0

感謝您的回答,但那不是我的意思:(我編輯了一些更多的問題。希望它更清楚... – Sinan 2009-08-04 19:55:43

+0

順便說一句,HTML 5鏈接很酷:) – Sinan 2009-08-04 20:25:36

1

=================編輯:新的電勢回答============== =======

假設您設法從服務器檢索JavaScript數據對象,您是否希望將您在HTML標記中獲得的JavaScript數據注入客戶端?

如果這是你可能看IBDOM情況:http://ibdom.sf.net/

我寫的,我們已經受夠了在生產上數字的網站一對夫婦多年。

=================老回答以下====================

所以你希望「eventData」成爲JavaScript可以使用的「東西」。

我建議你先在PHP考慮看看JSON:

[REMOVED鏈接到JSON在PHP中,不需要]

然後你的PHP代碼可能類似於此:

<?php include "my_class.php"; ?> 

$(document).ready(function(){  

    $.ajax({ 
    url: "<?php $my_obj->post_url(); ?>", 
    data: <?php json_encode ($my_obj->getData()); ?>, 
    success: function(){ 
     alert("Post successful") 
    } 
    }); 
}; 

所以這裏的想法是,你的「data:」字段的值將成爲由服務器上的PHP生成的JSON對象圖。

1

你可以要求服務器使用URL .get.ajax(假設你的urls.php會妥善處理這一點,並返回一個正確的琴絃 - 或JSON,在這種情況下,你還不如用.getJSON - 在它的URL)。例如(當然未經測試):

$.get("urls.php", { operation: "post_handler" }, 
    function(data){ 
     $.ajax({ 
      url: data, 
      data: eventData, 
      success: function(){ 
       alert("Post successful"); 
      } 
     }); 
    });