Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于PHP输出执行Javascript的正确方法_Javascript_Php_Jquery_Ajax - Fatal编程技术网

基于PHP输出执行Javascript的正确方法

基于PHP输出执行Javascript的正确方法,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个javascript函数,它从表单中获取信息并将其发送到我的数据库。我想给它添加一个PHP异常。类似于“if”which“执行javascript函数,否则抛出异常消息”。我对javascript有点陌生,我不知道从php文件调用javascript函数的好方法是什么 代码如下: index.php <?php /* Template Name: X */ get_header(); ?> <!DOCTYPE html> <html> <he

我有一个javascript函数,它从表单中获取信息并将其发送到我的数据库。我想给它添加一个PHP异常。类似于“if”which“执行javascript函数,否则抛出异常消息”。我对javascript有点陌生,我不知道从php文件调用javascript函数的好方法是什么

代码如下:

index.php

<?php
/*
Template Name: X
*/
get_header(); ?>

<!DOCTYPE html>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>X</title>
    <script src="jquery-1.10.2.min.js"></script>

</head>

<body>

<div style="margin-top:30px;" align="center">

<form id="myForm" action="sendMessage.php" method="post">
<textarea style="resize:none" cols="80" rows="4" name="message" placeholder="Entrez votre message ici"></textarea><br />
<button   style="margin-top:2px; margin-bottom:10px;" id="sub">Envoyer</button>
</form> 

</div> 

<script src="sendMessage.js"></script>

<div id="output">
</div>

</body>  
</html>

<?php get_footer(); ?>

基本上,我想做的是用PHP条件执行javascript/ajax。

除了“用PHP执行javascript”这句奇怪的话之外,这很简单

在PHP端,showMessage.PHP应该在头中发回一个非2xx HTTP状态代码。可能是一个5xx的错误。然后ajax处理
错误
或特定的
状态码
(请参阅)

通常,PHP应该处理异常,并使用正确的状态代码将其报告为HTTP错误(类似于使用route not found错误发送404)

编辑:为了澄清这一点,您可以在php中使用
标题(…)
发送标题


如果您还没有使用一个框架来为您抽象它,那么您确实应该抽象它。例如,Symfony/Silex具有返回带有HTTP状态代码的
Response
对象的控制器。状态是通过
标题发送的,但是这个细节是从应用程序的业务逻辑中抽象出来的。

除了“用PHP执行javascript”这一奇怪的措辞之外,这是非常简单的

在PHP端,showMessage.PHP应该在头中发回一个非2xx HTTP状态代码。可能是一个5xx的错误。然后ajax处理
错误
或特定的
状态码
(请参阅)

通常,PHP应该处理异常,并使用正确的状态代码将其报告为HTTP错误(类似于使用route not found错误发送404)

编辑:为了澄清这一点,您可以在php中使用
标题(…)
发送标题


如果您还没有使用一个框架来为您抽象它,那么您确实应该抽象它。例如,Symfony/Silex具有返回带有HTTP状态代码的
Response
对象的控制器。状态是通过
标题发送的,但是这个细节是从应用程序的业务逻辑中抽象出来的。

您可以使用php生成JS,并在HTML部分进行响应,但是请记住JS是客户端,php是服务器端,它们都不能相互作用,尽管如果您想在某些HTML上执行JS,您可以使用html进行响应

例如:


您可以使用php生成JS,并在HTML部分中进行回显,但请记住JS是客户端,php是服务器端,它们都不能相互作用,尽管如果您想在某些HTML上执行JS,可以使用HTML进行回显

例如:


php无法执行javascript。javascript无法执行php。两者之间发生的唯一通信(在您的例子中)是通过http请求。你可以让你的php生成javascript代码,然后让你的javascript在收到代码时执行,但通常最好是返回文本数据并对其进行解析。我认为你走的是正确的道路,因为你正在尝试使用AJAX。根据PHP脚本的响应(您的脚本应该返回某种值),您可以定义JS函数应该做什么。要扩展@KevinB的注释:PHP在web服务器上执行,JavaScript在客户端(即在web浏览器中)执行。因此,它们是断开连接的环境。javascript执行的唯一位置是客户端“对于这种情况”,而PHP执行的唯一位置是服务器,在编写代码时请记住:)我认为当您谈论PHP和javascript交互时,这里有一个通信问题。PHP处理请求并发送响应。但这是可能的。Javascript可以查看来自服务器的响应(不管是PHP、Ruby还是.NET等等),并相应地采取行动。PHP不能执行Javascript。javascript无法执行php。两者之间发生的唯一通信(在您的例子中)是通过http请求。你可以让你的php生成javascript代码,然后让你的javascript在收到代码时执行,但通常最好是返回文本数据并对其进行解析。我认为你走的是正确的道路,因为你正在尝试使用AJAX。根据PHP脚本的响应(您的脚本应该返回某种值),您可以定义JS函数应该做什么。要扩展@KevinB的注释:PHP在web服务器上执行,JavaScript在客户端(即在web浏览器中)执行。因此,它们是断开连接的环境。javascript执行的唯一位置是客户端“对于这种情况”,而PHP执行的唯一位置是服务器,在编写代码时请记住:)我认为当您谈论PHP和javascript交互时,这里有一个通信问题。PHP处理请求并发送响应。但这是可能的。Javascript可以查看来自服务器的响应(不管是PHP、Ruby还是.NET等等),并相应地采取行动。
$("#sub").click( function() {
$.post( $("#myForm").attr("action"),
$("#myForm :input").serializeArray(), 
function(info) { $("#result").html(info); } );
clearInput();
clickSub();     
});
$("#myForm").submit( function() {
    return false;   
});


function clickSub(){
$.ajax({
            url: "showMessage.php",
            type: "POST",
            async: true, 

            dataType: "html",

            success: function(data) {
                $('#output').html(data); 
            }
});
}
   <?php 
    dynamic_code='
     $("#sub").click( function() {
     $.post( $("#myForm").attr("action"),
     $("#myForm :input").serializeArray(), 
     function(info) { $("#result").html(info); } );
     clearInput();
     clickSub();     
     });
     $("#myForm").submit( function() {
     return false;   
   });


      function clickSub(){
      $.ajax({
        url: "showMessage.php",
        type: "POST",
        async: true, 

        dataType: "html",

        success: function(data) {
            $("#output").html(data); 
        }
  });
   } '

 ?>
    <?php echo dynamic_code ?>