Ajax没有将变量传递到另一个页面吗?

时间:2019-04-11 10:27:47

标签: javascript php arrays ajax

我想在用户email单击订阅按钮时将其保存到数据库。但是,当我输入电子邮件并单击“订阅”按钮时,它将传递一个空数组!

订阅表单代码:

<form id="cx-subscribe-user">
    <input type="text" name="email" id="email" placeholder="Enter Your Email" />
    <button type="submit" id="subscribe-button">Subscribe</button>
</form>

Js代码:

$('#cx-subscribe-user').on('click', function (e) {
    e.preventDefault();
    var email = $('#email').val();
    $.ajax({
        type: "GET",
        url: "subscribe-the-user.php",
        processData: false,
        dataType: 'json',
        data: {email: email},
        success: function(data) {
            console.log('saved scucess');
        }
    });
});

subscribe-the-user.php文件中,我正在尝试var_dump请求,但它正在打印空数组:

var_dump($_GET);exit;

var_dump 中,我收到了这个空数组 array(0) {}

4 个答案:

答案 0 :(得分:5)

删除processData,如文档所述,它将使您的请求混乱

  

processData(默认值:true)

     

类型:布尔

     

默认情况下,数据传入   数据选项作为对象(从技术上讲,除   字符串)将被处理并转换为适合的查询字符串   设置为默认的内容类型“ application / x-www-form-urlencoded”。如果   您要发送DOMDocument或其他未处理的数据,请设置此   选项为false。   https://api.jquery.com/jQuery.ajax/

答案 1 :(得分:2)

问题是您正在onclick()对象上使用<form>事件,因此,一旦您在电子邮件输入字段中单击以添加一些数据,就会触发表单onclick()事件并如果提交空白的email参数给PHP,则email字段中没有任何数据的情况下将发生ajax请求。

将表单onclick()更改为按钮click()或表单submit()

$('#subscribe-button').on('click', function (e) {

删除processData: false, [基于文档:-jQuery ajax documentation]

  

processData(默认值:true)类型:布尔值默认情况下,数据传入   数据选项作为对象(从技术上讲,除   字符串)将被处理并转换为适合的查询字符串   设置为默认的内容类型“ application / x-www-form-urlencoded”。 如果   您要发送DOMDocument或其他未处理的数据,请设置此   选项为false。

答案 2 :(得分:1)

您可以使用POST方法

$('#cx-subscribe-user').on('click', function (e) {
    e.preventDefault();
    var email = $('#email').val();
    $.ajax({
        type: "POST",
        processData: false,
        dataType: 'json',
        data: {email: email},
        url: "subscribe-the-user.php",
        success: function(data) {
            console.log('saved success');
        }
    });
});

答案 3 :(得分:1)

电子邮件在发送请求之前需要一些编码

$.ajax({
    url: "ajax.php",
    type:'get',
    data: { email: encodeURIComponent(email)},
    dataType: 'json',
    success: function(response) {
      //Do Something
    },
    error: function(xhr) {
    //Do Something to handle error
    }
});