是否可以在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>
所以,现在,我想将X
和Y
坐标保存在同一个数据库中,可能在另一个表中。这是我试过的:
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
是一个单独的文件,与原始问题中的文件完全相同。
谢谢你的帮助,
ħ
答案 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>