php 为什么 AJAX 不能发送数组数据?

cwtwac6a  于 2022-12-10  发布在  PHP
关注(0)|答案(2)|浏览(141)

正在尝试将表单数据发送到PHP页,data:imagesBase64外,所有参数都已成功发送
这个imagesBase 64是一个数组,我试图发送,几个小时前一切都很好,但现在它不工作,我真的不知道为什么。
所有值都已成功发布,只有此值未发布,而且我无法在控制台中看到错误,因为它已重定向到我发布数据的URL

var imagesBase64 = ['abcdfd','dhydsu333ud','djhbsd'];

  $(function () {
    var frm = $("#saveform");
    frm.submit(function (ev) {
      $.ajax({
        type: frm.attr("method"),
        url: frm.attr("action"),
        data: {
          data: imagesBase64,
          PubId: $("#Publications").val(),
          sdate: $("#datepicker").val(), 
          pnumber: $("#pnumber").val()
        },
        cache: false,
        error: function (err, data) {
          console.log("There was an error. Try again please!" + data, err);
        },
        success: function (data) {
          alert("New message received");
        },
      });
      ev.preventDefault();
    });
  });

在PHP页面中-

print_r($_POST['data']);

它给出了一个未定义数据的错误,尽管当我尝试使用postman时,一切都工作正常。

t1qtbnec

t1qtbnec1#

我也不能看到控制台中的错误,因为它重定向到URL,我张贴的数据
这就是问题所在
您正在使用常规表单提交而不是 AJAX 向服务器提交数据。由于没有使用Ajax代码,因此不包括从表单外部添加的数据。
这 * 通常 * 是由常规表单提交中断 AJAX 请求引起的,但由于您有ev.preventDefault();,所以这里不应该出现这种情况。
可能适用的原因包括:

  • var frm = $("#saveform")找不到表单,原因是选择器错误或表单是其他JS加载文档后添加的
  • 您没有加载jQuery,因此对$的调用失败
  • 您已经加载了jQuery Slim,它不包括ajax方法(将对preventDefault的调用移动到对ajax的调用之前将有助于捕获此问题)。

你的浏览器开发工具应该有一个类似“PersistLogs”的东西,它可以防止浏览器在你导航到新页面时清除控制台。打开它可以帮助你调试。下面是它在Firefox中的样子:

zi8p0yeb

zi8p0yeb2#

许多网页会将 AJAX 要求传送至服务器。因为这需要服务器以及客户端与服务器之间的网络合作,所以您可能会看到下列AJAX错误:JavaScript程序收到错误响应而不是数据;您的程序等待响应的时间太长。

相关问题