Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Jquery/Ajax未从小部件获取输入值_Php_Jquery_Ajax_Wordpress - Fatal编程技术网

Php Jquery/Ajax未从小部件获取输入值

Php Jquery/Ajax未从小部件获取输入值,php,jquery,ajax,wordpress,Php,Jquery,Ajax,Wordpress,有一个ajax请求将数据发送到WordPress操作,该操作工作正常,但是我可以完美地接收nonce值,但是没有发送电子邮件输入。我知道我的目标是正确的价值观。它不希望获取电子邮件输入的值。如果我将一个值硬编码到输入中,它将看到它。我需要获得用户输入的值并将其发送到ajax脚本。代码也会在文档加载时运行,并在呈现表单值之后运行 输入字段如下所示: <input type="email" name="cjd_email" id="cjd_email" class="cjd-email-in

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

输入字段如下所示:

 <input type="email" name="cjd_email" id="cjd_email" class="cjd-email-input"/>
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);

                }
            }
        }); 

谢谢:

我假设您有一个表单类,即cjdajax。然后使用serialize方法发送数据,而不是任何其他方法

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

               //your code
            }
        }); 

根据您使用的浏览器的不同,jQuery/JavaScript可能不支持type=email,因此有效的方法可能会返回非常奇怪的值。或者,可以使用type=text进行输入验证

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

在PHP中,可以编写printjson_encode$yourArray,true;请注意,关联关键点如何需要true标志,而

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

可以替换相应的当前JavaScript段落。

如果您在控制台中键入此内容,您会看到什么:console.log$'cjd_email'。长度如果脚本没有执行任何操作,请检查服务器错误日志发送请求之前是否检查了cjd_email变量是否包含正确的值?当硬编码该值时,它会发送电子邮件-当我输入电子邮件地址并单击“提交”时,它不会。就像它看不到输入的文本一样,我觉得奇怪的是,我在WordPress的后端使用了几乎完全相同的函数。我正在本地化脚本,ajax正在启动——只是没有读取输入的单个值。您能检查服务器是否正确发送和接收输入吗?如果没有,您可以console.log该字段的值,如果需要,尝试使用预定义值的普通文本输入,以确保问题不在客户端。尝试了以上两种方法-当输入硬编码值时,通过admin-ajax.php接收和发送电子邮件。console.log显示一个空值。当我在输入中输入一些东西时,没有任何东西会被发送,nonce会这样做,这很好。它似乎没有读取提交时输入的值。我不久前在Firefox上遇到了同样的问题。在那里,我切换到,解决方案开始起作用。现在,在尝试了你的代码之后,IE 11和Chrome似乎都能满足我的需要。如果既不是浏览器也不是输入类型,我只能建议您尝试最基本的图像设置,忽略所有不需要的内容,以便专注于重要的内容。
...
success: function(data){
    var yourObject = JSON.parse(data);
    if (yourObject.responseData === "success")
        console.log(yourObject.message);
},...