【问题标题】:Ajax post returns nothingAjax 帖子不返回任何内容
【发布时间】:2016-10-26 17:55:14
【问题描述】:


我正在尝试通过 post 将一些数据发送到 php 文件,但由于某种原因它没有被发布。我从var_dump 上的 php 文件在控制台日志中收到一个空数组。
这是我在这些文件中的代码:

index.php

<button type="button" class="btn btn-warning" id="resetPassword">Reset Password</button>

<script>
  $(document).ready(function (e){
   $("#resetPassword").click(function(e){
      e.preventDefault();
      $.ajax({
        url: "scripts/process.php",
        type: "POST",
        data: {name: 'test'},
        cache: false,
        processData:false,
        success: function(data) {
          if (data === 'Success') {
            new PNotify({
              title: 'Success!!!',
              text: 'Request completed successfully.',
              type: 'success',
              styling: 'bootstrap3'
            });
            $('#exampleModal').modal('hide');
            $('#datatable-buttons').DataTable().ajax.reload();
          } else {
            console.log(data);
            new PNotify({
              title: 'Error!!!',
              text: data,
              type: 'error',
              styling: 'bootstrap3'
            });
            //document.getElementById("status").className += " alert-danger";
            //$("#status").html(data);
          }
        },
        error: function (xhr, ajaxOptions, thrownError) {
          alert("ERROR:" + xhr.responseText+" - "+thrownError);
        } 
      });
    });
  });
</script>

这里是php文件process.php。

var_dump($_POST);

console.log 中的结果:

array(0) {}

解决方案:

删除processData: false

谢谢大家。

【问题讨论】:

  • 为什么你甚至期望dataSuccess?它不能像你那样工作。 data 是你 php 的 var_dump($_POST); 的内容,而不是 Success
  • 并删除processData: false,那么您的参数也应该可以工作。
  • 请检查您的数据是否返回成功,因为您正在尝试使用=== 进行检查,因为它将检查更准确的结果并检查console.log(data)。在您的 php 文件中检查返回值。满足条件后退出,

标签: php jquery ajax post


【解决方案1】:

如果你通过processData:false尝试,它需要的数据是原始字符串

改变

   data: {name: 'test'},

进入

   data: "name=test",

【讨论】:

    【解决方案2】:

    在 process.php 文件中返回数据时您正在使用什么? ECHO 还是 RETURN?

    尝试 ECHO,如果不起作用,请尝试 RETURN 语句。您的其余代码似乎没问题。

    在 scripts/process.php 上使用 print_r() 进行调试,并在浏览器的控制台中检查它的输出。另外,您可以使用 javascript 的 toSource 来检查变量的数据

    【讨论】:

      【解决方案3】:

      试试这个 之前还是之后

      e.preventDefault();
      
      var formData = $("#yourform_id").serializeArray(); //form data
      

      并用这一行数据替换数据

      data: formData,
      

      删除

      processData:false,
      

      【讨论】:

        【解决方案4】:

        删除 processData:false, 部分然后重试。

        【讨论】:

          猜你喜欢
          • 2013-04-27
          • 2017-04-30
          • 2014-02-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-27
          相关资源
          最近更新 更多