如何同时使用 php 和 javascript?从我自己的研究来看,这似乎是不可能的。我知道他们是不同的,他们每个人都有自己做的特别的事情。但是,假设您正在验证一个表单。您使用 javascript 验证表单,然后如果没有错误,则运行 php 插入记录。你会怎么做?有没有办法在 javascript 中运行 php 或调用 php 方法?
5 回答
通常你会看到 Javascript 被用作客户端代码。这意味着访问您网站的浏览器将下载您的 Javascript 代码、编译并自行运行。客户端代码仅仅意味着客户端(访问您网站的人)运行代码。
另一方面,PHP 用作服务器端代码。这意味着您的 Web 服务器会解析并运行您的代码。服务器端代码只是意味着代码在您的 Web 服务器上运行。
您可以从 PHP 代码向 Javascript 提供信息。例如:
<?php
$myVariable = 'a testing variable';
?>
<script type='text/javascript'>
var fromTheServer = '<?php echo $myVariable; ?>';
</script>
Javascript 变量fromTheServer设置为 php 变量myVariable的值。所有这一切实际上都是将 php 变量的值输出为 Javascript 使用的字符串。这种方法很有用,例如,如果您想要用户当前在其购物车中的购物车项目的 Javascript 数组。
<?php
// get some shopping cart items using a function
$shoppingCartItemsArray = getShoppingCartItems();
?>
<script type='text/javascript'>
var shoppingCartItemsArray = "<?php echo implode('|', $shoppingCartItemsArray); ?>";
// split the string value by the | delimeter to get an array
shoppingCartItemsArray = shoppingCartItemsArray.split('|');
</script>
现在您已经了解了如何将 php 与 Javascript 集成一点。再一次,这并不是真正的集成,只是从服务器输出信息。向服务器发送信息呢?这就是 AJAX 的用武之地。
假设您正在使用 Javascript 实现拖放式购物车。这个想法是用户从您的网站中挑选一个项目并将其拖到他们的购物车中。放开物品后,该物品应添加到服务器上的用户购物车中。您将使用 AJAX 将项目编号发布到服务器并等待服务器告诉您项目是否已成功添加。注意:您可以使用本机 Javascript 代码构建自己的 AJAX 方法,但是,当您可以使用内置它的框架时,为什么要这样做呢?我通常使用jQuery,但是您可以使用许多其他 JS 框架。
以下非常简单的示例显示了在上述情况下与 Javascript 和 php 交互的样子。它使用jQuerys$.ajax();
函数。
<?php
/** File: https://www.example.com/cart.php **/
// .. code
if($_POST['action'] === 'addItem'){
$result = addItemToCart($_POST['itemId']);
echo $result;
}
// ... code
?>
<script type='text/javascript'>
// code ....
$.ajax({
url: 'https://www.example.com/cart.php'
type: 'POST',
data: {
action: 'addItem',
itemId: getDraggedItem() // get the item id from a function
}
success: function(result){
$('#ServerMessage').html(result);
}
});
// code ....
</script>
好的,现在您可以非常简要地了解如果将javascript 用作客户端代码,则php 和 Javascript 是如何工作的。
Javascript 也可以用作服务器端代码,例如,IIS 允许您运行与 VBScript 相切的 JScript。
<script type='text/javascript' runat='server'>
Response.Write("MS Server here.")
</script>
除此之外,CommonJS还为许多项目正在实施的服务器端 Javascript 代码提供 API。您可能听说过其中的一些,尤其是Node.js。这些项目之一可能允许您同时运行 php 和 javascript,您必须查看。
底线是,Javascript 不仅仅是客户端代码。它只是可以在服务器或客户端上执行的简单代码,或者作为清理 iTunes 资料库的一种方式。
您需要在 JavaScript 和 PHP 中进行验证。但最重要的是 PHP 验证,因为请记住:Javascript 是前端代码,因此可以由用户修改或简单地禁用。因此,在插入之前,您必须在 PHP 中进行验证。
有成千上万的 javascript 验证插件,一个很好的是 jQuery Validate: http ://bassistance.de/jquery-plugins/jquery-plugin-validation/
你有一个关于 PHP 验证的例子:http: //buildinternet.com/2008/12/how-to-validate-a-form-complete-with-error-messages-using-php-part-1/
您可以使用 javascript 验证并使用 php 插入记录。但是,如果您将使用 javascript 和 php 验证记录会更好。为什么?因为当您在浏览器中关闭 javascript 时,javascript 验证将无用,这意味着,如果浏览器 javascript 关闭,则不会运行任何验证,这意味着无效记录将被插入到您的数据库中。所以最好有一个备份 php 验证。
<?php
if(PHP VALIDATION) {
echo 'You were not validated';
} else {
echo "<script src=\"FILE WITH UR JAVASCRIPT\"><script>"
}
?>
只有在 php 验证完成后,此 javascript 才会加载和执行。
让我们举个简单的例子:给出的例子使用了 jquery,你可以用谷歌搜索一下。html:
<html>
<body>
<input type = "text" name = "username" id = "username"></input>
<input type = "button" name = "submit" id = "save_button" value = "insert"></input>
<div id = "save_stat"></div> <!--This will be the status of the insertion. "loading or sucess!"---->
<script>
$('#save_button').click(function(){ //assign an event handler
//grab values
var name = $('#username').val(); //get the value of whatever the user entered
//perform HTTP ajax request
//could be $.get instead
$.post('phpfile.php', (name:name)/*this could be modified to (name:name, password: password) etc.*/, function(data){ //send the data to the php file.
$('#save_stat').html(data);
});
});
</script>
</body>
</html>
现在剩下要做的就是创建 php 注册页面并链接它而不是“phpfile.php”并在该文件中加载值,sinply 使用 $_POST['name']; 或 $_POST['密码']; 等等
上面的答案(由其他人建议)是完美的,因为它们暗示了创建同步 Javascript 和 php 应用程序实际需要的本质。
** *编辑通知* ** * **** 创建 php 时,给用户消息时使用 echo 语句,即
if(!empty($_POST['name'])){
echo "You successfully entered your name!";
}else
echo "you forgot to enter a name";
样品 #2
if(!empty($_POST['name'])){
$message = "You successfully entered your name!";
}else
$message = "you forgot to enter a name";
echo $message;