2014-03-13 57 views
1

* 處理這個問題的正確方法是什麼? *如何根據url中的參數加載js函數?

我想要做什麼: 比方說,我有一個像網址:

http://www.domain.com/parties/ 

此鏈接顯示的所有各方。每一方是可以點擊的,如果用戶點擊他們(ID號爲54)中的一個,那麼這個頁面會顯示:

http://www.domain.com/party/54 

一個頁面會顯示爲特定方54

當我m叫http://www.domain.com/party{id},我包含一個javascript文件。在這個js文件(party.js)我有一個功能loadParty(party_id)

我想調用http://www.domain.com/party/54(我必須使用javascript爲此(我必須檢索有關屏幕分辨率等信息))加載一個特定的js函數加載實際的黨(54))。

我該怎麼辦?

  1. VAR party_id = <?php echo $get['id'];>;
  2. 使用Ajax調用PHP,返回的$_GET['id']值(並把它放入party_id - JS - 變量)?

    然後調用loadParty(party_id);

還有其他想法嗎?

(我使用jQuery /笨如果它的問題(我認爲不會))

UPDATE

我只是做<?php echo $get['id'];>;只是爲了顯示我想做什麼的原則。我絕不會這麼做,我保證! :-)

更相關的代碼會是這樣的

<?php 
if (isset($_GET['id'])) { 
    $id = intval($_GET['id']); 
    $party = new Party(); 
    $party_id = $party->doPartyExists($id); //Returns 0 at false 
    if (intval($party_id) === 0) { 
     throw new Exception('this is not a party'); 
    } 
} 
?> 

,然後把它放在$party_id - 值到JS ......

+1

var party_id = <?php echo $ get ['id'];>;不要這樣做!您允許某人執行跨站點腳本攻擊(XSS)攻擊 - 過濾您的ID(例如投射到(in​​t)) –

回答

1

@notsobestprogrammerintheword :)

你的做法是好的,但我對自己在$ _GET關鍵問題:它可能不是「身份證」,而是「黨」,但它取決於路由配置。 請將$ _GET的值轉換爲INT:使您的網站免受XSS攻擊!

var party_id = '<?php echo isset($_GET["id"]) ? (INT) $_GET["id"]: 0;>'; 
+0

謝謝!當然。我並不在乎爲了描述我的情況而關心驗證。我已經更新了我的問題。 – bestprogrammerintheworld

+0

偉大的在這裏。 ;) –

1

首先 做到這一點 -

<?php 

    $id = $_REQUEST['id']; 

?> 

然後調用函數如t他 -

loadParty('<?php echo $id ?>'); 

不需要ajax調用。順便說一下,你可以在你輸入url的同一個文件中寫入兩段代碼。

相關問題