在JavaScript代码中有一个PHP代码块

时间:2014-02-24 11:23:27

标签: javascript php jquery html

是否可以在JS块中使用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是一个单独的文件,与原始问题中的文件完全相同。 谢谢你的帮助, ħ

4 个答案:

答案 0 :(得分:1)

这是错误的但是可能

喜欢来自jquery函数的这些行

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

改为 ... ...

 <?php 

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

并保存文件有jquery与php扩展

答案 1 :(得分: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 ) ));
    });
});

答案 2 :(得分:1)

数据库存在于您的Web服务器上。 javascript正在客户端计算机上运行。如果要将坐标存储在服务器上的数据库中,则必须将数据发布到Web服务器,并让Web服务器负责更新数据库。有很多方法可以获得Web服务器的坐标。一种是使用XHR(XML HTTP请求),它不会进行页面刷新。另一种方法是使用URL更新window.location.href,该URL包含将更新数据库以及x和y值的php程序的名称。这将进行页面刷新。还有很多其他方法。要记住的主要事情是php代码在一台计算机上运行,​​javascript在另一台计算机上运行。你不能将js代码与php代码混合在一起,但是......你可以使用php为你编写js代码(很少有人这样做,但它有效)就像我们经常使用php代码编写HTML代码一样。我认为这可能是你困惑的根源。看起来一台计算机正在运行这两种语言,但事实并非如此。服务器运行php,可以创建js发送到客户端上运行的浏览器,但它不执行js代码,只是“写”它,以便客户端到达那里时可以执行它。

答案 3 :(得分: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>