Jquery / Ajax没有从widget获取输入值

时间:2015-02-13 11:28:46

标签: php jquery ajax wordpress

有一个ajax请求将数据发送到WordPress动作但工作正常但是我可以完美地接收nonce值但电子邮件输入没有被发送。我知道我的目标是正确的价值。它不希望获得电子邮件输入的值。如果我将值硬编码到输入中,它将会看到它。我需要获取用户输入的值并将其发送到ajax脚本。代码也在文档加载时运行,并且在表单值已经呈现之后。

输入字段如下所示:

 <input type="email" name="cjd_email" id="cjd_email" class="cjd-email-input"/>

jquery选择器如下所示:

var cjd_email = $('#cjd_email').val();

ajax调用是:

$.ajax({
            url: cjdAjax.ajaxurl,
            type: 'POST',
            data: {
                action: 'cjd_subscribe',
                nonce: cjd_nonce,
                email: cjd_email
            },
            cache: false,
            success: function(data) {
                var status  = $(data).find('response_data').text();
                var message = $(data).find('supplemental message').text();

                if(status == 'success') {
                    console.log(message);
                }
                else {
                    console.log(message);

                }
            }
        }); 

谢谢:)

2 个答案:

答案 0 :(得分:0)

我假设你在表格上有一个班级,即cjdajax。然后使用serialize方法发送数据而不是任何其他数据。

$.ajax({
            url: cjdAjax.ajaxurl,
            type: 'POST',
            data: $('.cjdAjax').serialize(),
            cache: false,
            success: function(data) {

               //your code
            }
        }); 

答案 1 :(得分:0)

根据您使用的浏览器,jQuery / JavaScript可能不支持type=email,因此valid()方法可能会返回相当奇怪的值。作为替代方案,可以使用type=text进行输入验证。

此外,您应该查看成功函数:您尝试在文本而不是DOM元素上应用find() - 方法。如果服务器返回了JSON编码的字符串,则可以更正代码,因此在JavaScript中,您可以将字符串转换回对象。

在PHP中,可以编写print(json_encode($yourArray, true));(注意关联键需要true标志),而

...
success: function(data){
    var yourObject = JSON.parse(data);
    if (yourObject.responseData === "success")
        console.log(yourObject.message);
},...

可以取代各自当前的JavaScript段落。