如何让php POST代码在Javascript代码之前运行?

如何让php POST代码在Javascript代码之前运行?,javascript,php,jquery,Javascript,Php,Jquery,我有一个网站,所有的错误信息都显示在页面顶部的“div”中。我需要更改代码,使错误显示为警报,但我不知道如何正确计时 我已经创建了一个更简单的示例来说明我要做的事情 我希望发生以下情况: 用户在“字母”输入中键入字母 用户单击提交按钮 表单POST和PHP代码检查键入的字母并设置变量($FROUT) HTML重新呈现,如果变量($FROUT)有一个值,它将被放入“FROUT”输入中。(这里的目的是将结果放在Javascript可以到达的地方。) 然后Javascript执行并显示一个警报,显示“

我有一个网站,所有的错误信息都显示在页面顶部的“div”中。我需要更改代码,使错误显示为警报,但我不知道如何正确计时

我已经创建了一个更简单的示例来说明我要做的事情

我希望发生以下情况:

  • 用户在“字母”输入中键入字母
  • 用户单击提交按钮
  • 表单POST和PHP代码检查键入的字母并设置变量($FROUT)
  • HTML重新呈现,如果变量($FROUT)有一个值,它将被放入“FROUT”输入中。(这里的目的是将结果放在Javascript可以到达的地方。)
  • 然后Javascript执行并显示一个警报,显示“水果”输入的内容
  • 下面是Javascript:

    /* myTestScripts.js */
    
    
    
    $(document).ready(function() {
    
    window.onsubmit = function (e) {
      e.preventDefault();
      alert($("#fruit").val());
    };
    
    });
    
    这是我的index.php文件:

    <!DOCTYPE html>
    
    这只适用于聚会。它不会更新“水果”输入,因此也不会在警报中显示它

    如果处理此信息的PHP代码在我的“index.PHP”文件中,那是我传入的URL吗?或者我必须从index.php中取出所有处理代码,将其另存为一个单独的文件,然后将新文件传入吗

    如何让php POST代码在Javascript代码之前运行

    除了使用
    ajax
    之外,您的PHP代码以前从未像javascript那样运行过

    在您的情况下,您只想在警报中显示一些内容。如果我理解您的意思,您必须将包含“error”和
    echo
    的变量存储到javascript变量中

    当然,以下几行应该在相同的
    php
    文件中

    <script type="text/javascript">
     var error = "<?php echo $error; ?>";
     alert(error);
    </script>
    
    
    var误差=”;
    警报(错误);
    
    如何让php POST代码在Javascript代码之前运行

    除了使用
    ajax
    之外,您的PHP代码以前从未像javascript那样运行过

    在您的情况下,您只想在警报中显示一些内容。如果我理解您的意思,您必须将包含“error”和
    echo
    的变量存储到javascript变量中

    当然,以下几行应该在相同的
    php
    文件中

    <script type="text/javascript">
     var error = "<?php echo $error; ?>";
     alert(error);
    </script>
    
    
    var误差=”;
    警报(错误);
    
    我建议在jQuery/客户端中完成这一切

    注意:这并不能回答您的问题,只是一个建议

    这样,您就不需要重新加载页面

    将onClick侦听器添加到submit按钮,并使用
    preventDefault
    阻止提交。 然后执行检查并将结果插入输入:

    $('#click').click(function(event){
        event.preventDefault();
        var letter = $('#letter').val(),
            fruit = "No fruit for you!";
        switch(letter){
            case 'A':
                fruit = 'Apple';
                break;
            case 'B':
                fruit = 'Banana';
                break;
        }
        $('#fruit').val(fruit);
    });
    

    我建议在jQuery/客户端中完成这一切

    注意:这并不能回答您的问题,只是一个建议

    这样,您就不需要重新加载页面

    将onClick侦听器添加到submit按钮,并使用
    preventDefault
    阻止提交。 然后执行检查并将结果插入输入:

    $('#click').click(function(event){
        event.preventDefault();
        var letter = $('#letter').val(),
            fruit = "No fruit for you!";
        switch(letter){
            case 'A':
                fruit = 'Apple';
                break;
            case 'B':
                fruit = 'Banana';
                break;
        }
        $('#fruit').val(fruit);
    });
    

    嗯,你不应该这样处理这个问题

    我相信,您想要实现的目标可以通过Ajax实现

    我喜欢使用jQuery进行Ajax调用,下面是一个示例:

    $.ajax({
      url: "test.html",
      context: yourFormFields
    }).done(function() {
      $( this ).addClass( "done" );
    });
    
    如果您想了解更多信息:

    好吧,你不应该这样处理这个问题

    我相信,您想要实现的目标可以通过Ajax实现

    我喜欢使用jQuery进行Ajax调用,下面是一个示例:

    $.ajax({
      url: "test.html",
      context: yourFormFields
    }).done(function() {
      $( this ).addClass( "done" );
    });
    
    如果您想了解更多信息:

    window.onsubmit()在表单提交时,但在数据发送到服务器之前激发。如果您希望在页面从服务器返回后根据您用php填充的输入值生成警报,可以执行以下操作:

    $(document).ready(function() {
      if($('#fruit').val() != '') {
        alert($('#fruit').val());
      };
    });
    
    这不一定是处理这种情况的最佳方式(正如其他人所指出的),但我相信这是对您所问问题的最直接的回答。

    window.onsubmit()在表单提交时,但在数据发送到服务器之前触发。如果您希望在页面从服务器返回后根据您用php填充的输入值生成警报,可以执行以下操作:

    $(document).ready(function() {
      if($('#fruit').val() != '') {
        alert($('#fruit').val());
      };
    });
    

    这不一定是处理这种情况的最佳方式(正如其他人所指出的),但我相信这是对您所问问题的最直接的回答。

    一种更标准、更灵活的模式是将要使用ajax请求完成的
    PHP
    分离为自己的文件,而不是直接在HTML中

    因此,让我们创建一个ajax端点

    my-ajax-endpoint.php }))


    这是一个灵活的模式,可以用于许多不同的用例。您可以使用关联数组通过
    json\u encode()
    传回更多数据。使用
    $form.find(“[name=youinput]”)可以轻松地更新表单元素。

    一种更标准、更灵活的模式是将ajax请求中的
    PHP
    分离为自己的文件,而不是直接在HTML中

    因此,让我们创建一个ajax端点

    my-ajax-endpoint.php }))


    这是一个灵活的模式,可以用于许多不同的用例。您可以使用关联数组通过
    json\u encode()
    传回更多数据。使用
    $form.find(“[name=youinput]”)可以轻松地更新表单元素。

    使用AJAX。这很简单,使用AJAX。是的。我想你的意思是“永远运行”=>“永远运行”。我想你的意思是“永远运行”=>“永远运行”。如果op不打算提交到post,那么他们需要将提交按钮更改为只包含onclick事件的按钮。违约被贬值,最终会随着时间的推移而失败。在现实世界的应用程序中,Doctype HTML的方式是首选方式,除非您喜欢Ajax…
    event.preventDefault不推荐使用
    。它是?我在中没有看到任何东西,也没有给出任何指向该方向的结果…@Danimal说
    preventDefault()
    不推荐使用是很荒谬的。举出你的苏
    $("#form_to_submit").submit(function (evt) {
      evt.preventDefault();
      var $form = $(this); // the form we are acting on
      // xhr is a defered object
      var xhr = $.ajax({
        url: $form.attr('action'), // the url of the action
        data: $form.serialize(), // send all the form fields
        method: $form.attr('method') // POST or GET
      });
    
      // handle the data
      xhr.done(function (data) {
        // find the fruit field and store the fruit value
        $form.find("[name=fruit]").val(data.fruit);
        alert("Your fruit: " + data.fruit);
      });
    
      // handle HTTP errors
      xhr.fail(function (jqXHR, textStatus) {
        alert("Error: " + textStatus);
      });