2011-06-21 64 views
0

我發送給我的PHP的jQuery變量不起作用(或者至少,它似乎不起作用)。我用ajax將它發送給我的php。PHP如果語句不能與jQuery變量一起工作

請看看它,或許你可以看到問題:

   $('.do').click(function(){ 
       var cid2 = $(this).attr('id'); 
       var gebridauthpos = cid2.indexOf('||'); 
       var gebridauth = cid2.substring(gebridauthpos+2); 
       $.post("agenda.php", {gebridauth: gebridauth}); 
       alert(gebridauth); 
       <?php 
        if ($admin == true || isset($_POST['gebridauth']) AND $_SESSION['id'] == $_POST['gebridauth']) { 
         echo "$('#dialog').dialog('open');\n"; 
         echo "var cid = $(this).attr('id');\n"; 
         echo "var datum = cid.substr(0, 10);\n"; 
         echo "var naampos = cid.indexOf('|');\n"; 
         echo "var gebridpos = cid.indexOf('||');\n"; 
         echo "var naam = cid.substring(naampos+1,gebridpos);\n"; 
         echo "var gebrid = cid.substring(gebridpos+2);\n"; 
         echo "$.ajax({\n"; 
          echo "type: \"POST\",\n"; 
          echo "url: \"agenda.php\",\n"; 
          echo "data: naam,\n"; 
          echo "success: function(){\n"; 
           echo "$('#gebruikerinput').html(\"<input type='text' READONLY='' size='35' value='\" + naam +\"'>\");\n"; 
           echo "$('#gebridinput').html(\"<input type='hidden' name='gebridtextbox' value='\" + gebrid + \"'>\");\n"; 
           echo "$('#datuminput').html(\"<input type='text' READONLY='' size='12' name='datum' value='\" + datum + \"'>\");\n"; 
          echo "}\n"; 
         echo "})\n"; 
         echo "return false;\n"; 
        } 
       ?> 
      }); 

基本上就是我想要做的,是用「gebridauth」在我的PHP的if語句,當我點擊一個TD 。如果TD與登錄人員相同,則顯示對話框。

+1

迴應每一行JS *和*轉義引號?讀這傷害。 – ThiefMaster

+0

什麼是agenda.php? –

+0

Agenda.php是代碼所在的當前PHP。它基本上會生成一個包含數據的表。 – Yihka

回答

0

你需要在你的$.post調用上回調,現在你只是發送POST而不關注服務器發回的內容,所以不會出現對話框。我想你想要更像這樣的東西(真正的代碼在哪裏大評論):

$.post("agenda.php", {gebridauth: gebridauth}, function(data, textStatus, jqXHR) { 
    // If the server sent back a "show the dialog" value in data then 
    // show the dialog and all the other stuff that's currently in a 
    // bunch of PHP echo calls. 
}); 
+0

聽起來很有趣......但這並不意味着我無法檢查$ admin == true和$ _session ['id'] == $ _POST ['gebridauth']? – Yihka

+1

@Yihka:你檢查服務器上的東西,然後將一些信息作爲POST響應發送回客戶端。然後客戶端查看成功回調中的POST響應,並顯示對話框以及其他任何需要執行的操作。 –

+0

我看到...目前agenda.php是代碼所在的文件,我認爲可以使用$ _POST這種方式,因爲它保留在同一個文件中。 – Yihka

0

我想你是誤解AJAX的工作原理。你不能像這樣混合JavaScript和PHP,因爲它們在不同系統上運行的時間完全不同。如果您發佈到agenda.php,則您的PHP代碼需要位於文件agenda.php中。那個文件應該是而不是包含Javascript。您也將無法使用echo這樣的回報。

+0

到目前爲止,除了$ _POST之外,代碼似乎工作得很好。 agenda.php是所有代碼所在的文件相同的文件。我認爲可以返回一個POST,並在AJAX的同時使用該代碼。但如果這是不可能的,那將比我想象的要困難。 – Yihka

+1

是的,它的工作原理,除了沒有的部分。 ;-P你需要了解什麼是按什麼順序執行。 PHP在服務器上運行,客戶端使用Javascript。我對如何解釋這種根本性差異感到有些茫然,因爲這樣可以自己填寫整本書。也許你應該回到基礎知識並重新訪問AJAX教程或書籍。 – deceze