【问题标题】:how do I make $.ajax POST call to work with SSL?如何使 $.ajax POST 调用与 SSL 一起使用?
【发布时间】:2020-07-17 18:25:19
【问题描述】:

这是我的 JavaScript:

parameter = "name=" + name + "&email=" +
  email + "&phone=" + phone + "&comments=" + comments;

$.ajax({
  url: 'sendEmail.php?' + parameter,
  success: function(data) {
    if (data.indexOf("Message sent") > 0) {
      alert("Your email has been sent.");
      $('#user-name' + id).val("");
      $('#user-phone' + id).val("");
      $('#user-email' + id).val("");
      $('#user-message' + id).val("");
    } else {
      alert("Your email could not be sent!")
      console.log(data);
    }
  },
  error: function(data) {
    alert("Email could not be sent!")
    console.log(data);
  }
});

这是我的sendMail.php

$_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);

var_dump($_POST); echo "\n";

为什么这个var_dump() 会返回null? 这只是因为我在域中添加了 SSL。

【问题讨论】:

    标签: javascript php ajax ssl post


    【解决方案1】:

    您没有发布到您的脚本,您正在使用 URL 查询。您需要使用$_GET 而不是$_POST

    【讨论】:

      【解决方案2】:

      您正在发送 GET 请求,但您想从 POST 获取数据。 通过 post 发送数据

      $.post('sendEmail.php', {'name':name,'email':email,'phone':phone,'comments':comments}, function(data){
          if (data.indexOf("Message sent") > 0) {
            alert("Your email has been sent.");
            $('#user-name' + id).val("");
            $('#user-phone' + id).val("");
            $('#user-email' + id).val("");
            $('#user-message' + id).val("");
          } else {
            alert("Your email could not be sent!")
            console.log(data);
          }
      })
      

      【讨论】:

        【解决方案3】:
        var parameter = {
         name: name, 
         email:email, 
         phone: phone,
         comments: comments
        };
            
            $.ajax({
              url: "sendEmail.php",
              data:parameter, 
              method:"POST",
              async:true,
              success: function(data) {
                if (data.indexOf("Message sent") > 0) {
                  alert("Your email has been sent.");
                  $('#user-name' + id).val("");
                  $('#user-phone' + id).val("");
                  $('#user-email' + id).val("");
                  $('#user-message' + id).val("");
                } else {
                  alert("Your email could not be sent!")
                  console.log(data);
                }
              },
              error: function(jqXHR, textStatus, errorThrown) {
                alert(textStatus + " - " + errorThrown);
                alert(jqXHR.status);
                console.log(data);
              }
            });
        

        【讨论】:

        • 非常感谢。这解决了这个问题。不确定我的 .AJAX 调用出了什么问题,但现在我的 POST 数据进入了 sendEmail.php。
        • 所以如果我使用笔记本电脑/chrome,我的 PHP 代码可以发送电子邮件
        • 使用我的 android 手机也 chrome 我收到警报(“电子邮件无法发送!” - 对此有任何想法吗???
        • try catch the error on event > error: function (request, status, error) { alert(error);警报(状态); }
        • 所以现在我将我的代码/webside 移动到了一个新服务器...在旧服务器上工作的相同代码现在它出错了它会收到警报(“无法发送电子邮件!”) .永远不会进入 sendEmail.php!对此有任何想法吗?防火墙?
        猜你喜欢
        • 2013-10-07
        • 1970-01-01
        • 1970-01-01
        • 2018-10-28
        • 1970-01-01
        • 2016-03-08
        • 2018-07-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多