2014-02-24 80 views
-1

是否有可能在JS代碼塊中有PHP命令?在JavaScript代碼中有一個PHP代碼塊

首先,我做一個表單和保存的東西:

<form id = "myForm" action = "myPage.php" method = "post"> 

     <input type ="hidden" name = "action" value = "submit" ></input>   
     Name: <input type = "text" name = "name"> 
     <button id = "sub"> Submit my name </button> 

</form> 



<?php 
     if(isset($_POST[ "action" ]) && $_POST[ "action" ] == "submit") 
     { 
      include_once('db.php'); 
      $name = $_POST[ "name" ]; 
     } 
?> 

在我的db.php很簡單:

<?php 
    $conn = mysql_connect("localhost", "root", "");  
    if(!$conn) 
    { 
     die('Could not connect: ' . mysql_error()); 
    } 
    $db = mysql_select_db("myDatabase"); 
?> 

我也有一個顯示用戶的鼠標點擊的座標的JS代碼:

script> 
    $(document).ready(function(e) 
    { 
     $('#ClickBox').click(function(e) 
     { 
      var coordX = (e.pageX - $(this).offset().left - ($(this).width() * 0.5)); 
      var coordY = -(e.pageY - $(this).offset().top - ($(this).height() * 0.5)); 
      alert(coordX + ' , ' + coordY); 
     }); 
    }); 
</script> 

所以,現在,我想保存XY座標在同一個數據庫中,也許在不同的表中。這是我試過的:

script> 
    $(document).ready(function(e) 
    { 
     $('#ClickBox').click(function(e) 
     { 
      var coordX = (e.pageX - $(this).offset().left - ($(this).width() * 0.5)); 
      var coordY = -(e.pageY - $(this).offset().top - ($(this).height() * 0.5)); 
      alert(coordX + ' , ' + coordY); 

      $coordX = $_POST[ "x" ]; 
      $coordY = $_POST[ "y" ]; 
     }); 
    }); 
</script> 

這是錯的,是不是?我該怎麼做呢?

在此先感謝,


編輯:

這是我如何解決它:

<script> 
    $(document).ready(function(e) 
    { 
     $('#ClickBox').click(function(e) 
     { 
      var coordX = (e.pageX - $(this).offset().left - ($(this).width() * 0.5)); 
      var coordY = -(e.pageY - $(this).offset().top - ($(this).height() * 0.5)); 
      alert(coordX.toFixed(1) + ' , ' + coordY.toFixed(1)); 
      $.post("myMainPage.php", { action: "submitXY", vx: coordX.toFixed(1), vy: coordY.toFixed(1) }, function(data) { alert("DONE ... this alert can be removed"); }, "json");   
     }); 
    }); 
</script> 


<?php 
    if(isset($_POST[ "action" ]) && $_POST[ "action" ] == "submitXY") 
    { 
     include_once('db.php'); 

     $myClickX = $_POST[ "vx" ];  
     $myClickY = $_POST[ "vy" ]; 

     if(mysql_query("INSERT INTO click VALUES('$myClickX', '$myClickY')")) 
      echo "Successfully Inserted mouse click coordinates!"; 
     else 
      echo "Insertion failed . ."; 
    } 
?> 

db.php是一個單獨的文件,它到底是如何在原來的問題。 感謝所有幫助, ^ h

+1

您可以使用Javascript嵌入PHP。 –

回答

1

您的問題的答案是否定的。您的php在服務器上執行,而您的JavaScript在瀏覽器中執行。

實現你想要的一種方式是將多個隱藏字段添加到表單中,並讓你的JavaScript單擊處理程序將它們的值設置爲單擊的位置。

<form id = "myForm" action = "myPage.php" method = "post"> 

    <input type ="hidden" name = "action" value = "submit" > 
    <input type="hidden" name="click_x" id="click_x"> 
    <input type="hidden" name="click_y" id="click_y">   
    Name: <input type = "text" name = "name"> 
    <button id = "sub"> Submit my name </button> 
</form> 

您的JavaScript會變成類似...

$(document).ready(function(e) 
{ 
    $('#ClickBox').click(function(e) 
    { 
     $('#click_x').val((e.pageX - $(this).offset().left - ($(this).width() * 0.5))); 
     $('#click_y').val(-(e.pageY - $(this).offset().top - ($(this).height() * 0.5))); 
    }); 
}); 
+0

嗨安迪,謝謝你,但我的表單位於代碼的其他地方。我希望分開處理。我需要的是獨立處理鼠標點擊。你能否詳細說明你的答案,而不必將它們包含在同一個地方? – Joshua

+0

您在代碼中的其他位置究竟是什麼意思?你的意思是它在不同的頁面上? – Andy

+0

不,它位於同一個文件(myProject.php)中,但不在處理NAME提交的相同FORM塊中。你有什麼建議(我發現有幫助)需要一個提交,但我想單獨處理點擊提交... – Joshua

1

這是wronge但其可能

像jQuery函數這些線路

 $coordX = $_POST[ "x" ]; 
     $coordY = $_POST[ "y" ]; 

變化 ... ...

<?php 

    echo "coorX=".$_POST[ "x" ].";"; 
    echo "coorY=".$_POST[ "y" ].";"; 
?> 

並保存文件有php的擴展jQuery的

1

數據庫駐留在您的Web服務器上。 JavaScript正在客戶端計算機上運行。如果要將座標存儲在服務器的數據庫中,則必須將數據發佈到Web服務器,並讓Web服務器負責更新數據庫。有很多方法可以獲得到Web服務器的座標。一種是使用XHR(XML HTTP Request),它不會進行頁面刷新。另一種方法是使用包含將更新數據庫和x和y值的php程序的名稱的URL更新window.location.href。這將做一個頁面刷新。還有很多其他的方法。要記住的主要問題是,php代碼運行在一臺計算機上,JavaScript運行在另一臺計算機上。您不能將js代碼與php代碼混合在一起,但是......您可以使用php爲您編寫js代碼(很少有人會這樣做,但它起作用)就像我們經常使用php代碼編寫HTML代碼一樣。我認爲這可能是您混淆的根源。它看起來像一臺電腦運行兩種語言,但事實並非如此。服務器運行php,它可能會創建js發送到運行在客戶端上的瀏覽器,但它不執行js代碼,只是「寫」它,以便它可以在客戶端到達時執行。

1

是的,你可以輕鬆地在JS塊中使用PHP。 試試這個希望你會明白你的想法。

<script> 
    $(document).ready(function(e) 
    { 
     $('#ClickBox').click(function(e) 
     { 
      var coordX = (e.pageX - $(this).offset().left - ($(this).width() * 0.5)); 
      var coordY = -(e.pageY - $(this).offset().top - ($(this).height() * 0.5)); 
      alert(coordX + ' , ' + coordY); 
<?php 
      $coordX = $_POST[ "x" ]; 
      $coordY = $_POST[ "y" ]; 
?> 
     }); 
    }); 
</script> 
+0

嗨Masroor,這不適合我。我不明白爲什麼... – Joshua

+0

嗨約書亞,你會得到什麼錯誤? –

+0

嗨,我沒有得到任何錯誤。它只是不會做它應該做的事情(在我眼中,我的意思是)。顯然,我不能直接在JavaScript代碼中調用PHP代碼。也許我應該改變我的解決方法? – Joshua