【问题标题】:Some ajax help?一些ajax帮助?
【发布时间】:2011-08-26 03:42:16
【问题描述】:

我有一个 php 脚本,它接受一些用户表单输入并根据该输入将一些文件打包到一个 zip 中。问题是有时服务器出错,所以所有的表单数据都丢失了。有人告诉我我可以使用 ajax,这样用户甚至不必更改页面。从来没用过ajax,没有任何ajax经验看http://api.jquery.com/jQuery.ajax/还是挺难的。

该页面说您可以接受来自 ajax 调用的返回。如何在 PHP 文件中为 ajax 调用设置返回?如果服务器在 ajax 调用时出错,我怎么知道?

编辑:另外,有没有办法用 javascript 和 jquery 发送一个 ajax 请求,就好像它是一个提交的表单一样?

【问题讨论】:

    标签: php javascript jquery ajax


    【解决方案1】:

    如何在 PHP 文件中设置返回

    只需在将作为响应返回的 ajax 页面中 echo

    简单教程

    client.php

    $.post('server.php',({parm:"1"}) function(data) {
      $('.result').html(data);
    });
    

    server.php

    <?php
    
    echo $_POST['parm'];
    
    ?>
    

    结果为 1

    编辑 OP cmets 有没有办法像提交表单一样使用 ajax

    是的,有

    使用 sumit

    $('#form').submit(function() {
     //your ajax call
      return false;
    });
    

    【讨论】:

    • 那么页面的内容就是return了?
    • 你想返回什么就回显它。
    • @user828584:simple tutorial is updated in my answer check this out
    • 有没有办法像提交表单一样使用 ajax?
    • 好的,但是我怎样才能获得提交用于 ajax 请求的信息?
    【解决方案2】:

    每个 ajax 函数都有一个函数参数来处理服务器返回。其中大多数都有参数 msg,即来自服务器的消息。 服务器页面,例如 php 页面,您可以使用 echo something 将信息返回给 ajax 功能。下面是一个例子

    $.ajax({
      url:yoururl,
      type:post,
      data:yourdata,
      success:function(msg){
          //here is the function dealing with infomation form server.
      }
    });
    

    【讨论】:

      【解决方案3】:

      通过 AJAX 从 PHP 获取信息到 JavaScript 的最简单方法是使用 json_encode() 将任何 PHP 数据编码为 JSON。

      这是一个简短的示例,假设您的服务器错误是可捕获的

      <?php
      try {
          // process $_POST data
          // zip files, etc
          echo json_encode(array('status' => true));
      } catch (Exception $e) {
          $data = array(
              'status'  => false,
              'message' => $e->getMessage()
          );
          echo json_encode($data);
      }
      

      那么,你的 jQuery 代码可能看起来像这样

      $('form').submit(function() {
          var data = $(this).serialize();
          $.ajax(this.action, {
              data: data,
              type: 'POST',
              dataType: 'json',
              success: function(data, textStatus, jqXHR) {
                  if (!data.status) {
                      alert(data.message);
                      return;
                  }
                  // otherwise, everything worked ok
              },
              error: error(jqXHR, textStatus, errorThrown) {
                  // handle HTTP errors here
              }
          });
          return false;
      });
      

      【讨论】:

      • 对不起,我应该更具体一些。服务器并没有完全出错,但 Chrome 认为它确实是因为它需要多长时间?类似的东西。我在这里问过,没人知道。
      • @user 您可能需要调整 PHP 的 max_execution_time 设置。见set_time_limit()
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-09
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      • 2011-10-12
      • 2010-10-23
      • 2012-06-17
      相关资源
      最近更新 更多