Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.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/1/php/228.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
Javascript ajax成功返回0_Javascript_Php_Ajax_Wordpress - Fatal编程技术网

Javascript ajax成功返回0

Javascript ajax成功返回0,javascript,php,ajax,wordpress,Javascript,Php,Ajax,Wordpress,我需要一点帮助。我已经设计了自定义ajax函数。它是一个简单的表单,输入5个值,对它们进行验证,然后通过ajax将数据发送到php函数,该函数通过电子邮件发送这些详细信息。成功后,将向确认用户显示一个弹出窗口 我已经应用了验证,并且能够运行ajax。但由于某些原因,我的success函数不断返回0。请帮忙 提交chrome上的开发工具输出: chrome上提交时的网络输出: 我的javascript function contact_validations(){ event.preventD

我需要一点帮助。我已经设计了自定义ajax函数。它是一个简单的表单,输入5个值,对它们进行验证,然后通过ajax将数据发送到php函数,该函数通过电子邮件发送这些详细信息。成功后,将向确认用户显示一个弹出窗口

我已经应用了验证,并且能够运行ajax。但由于某些原因,我的success函数不断返回0。请帮忙

提交chrome上的开发工具输出:

chrome上提交时的网络输出:

我的javascript

function contact_validations(){
event.preventDefault();
var name= jQuery('#contactname').val();
var cemail= jQuery('#contactemail').val();
var tel= jQuery('#contactphone').val();
var address= jQuery('#contactaddress').val();
var message= jQuery('#contactsubject').val();
var s=true;

if(name==''|| name==null ){
    jQuery('#name_err').html('Please enter your name');
    s=false;
    }else{  
        jQuery('#name_err').html('');
        }

if(cemail==''){
    jQuery('#email_err').html('Please enter email');
    s=false;
    }else{ 
        var x=cemail;
        var atpos=x.indexOf("@");
        var dotpos=x.lastIndexOf(".");
        if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
            { jQuery('#email_err').html("Please Enter  Valid E-mail Address"); s= false;} 
            else{
                jQuery('#email_err').html('');
                }
        }   


if(tel==''|| tel==null ){
    jQuery('#tel_err').html('Please enter your telephone number');
    s=false;
    }else{  
        jQuery('#tel_err').html('');
        }



if(address=='' || address==null){
    jQuery('#address_err').html('Please enter your address');
    s=false;
    }else{  
        jQuery('#address_err').html('');
        }


if(message=='' || message==null){
    jQuery('#message_err').html('Please enter your message');
    s=false;
    }else{  
        jQuery('#message_err').html('');
        }
        console.log( url );


if(s)
        {
            var url = "http://localhost:9080/c/wp-admin/admin-ajax.php";
            var data = {

                "action":"contact_email" ,
                "name": name ,
                "email": cemail ,
                "tel": tel ,
                "address": address ,
                "message": message 


            }
            jQuery.ajax({
            type: "POST",
            url: url,   
            contentType: 'JSON',
            data: JSON.stringify(data),
            beforeSend: function(){
                console.log('happened');
                jQuery('#ajax-loader').show();
                jQuery('#ajax-loader').html('<img src="http://localhost:9080/c/wp-content/themes/aussie/images/ajax-loader.gif">');
                },
            success: function(result) {
                jQuery('#ajax-loader').hide();
                console.log(result);


                if(result=='0')
                {
                    console.log("No Result")
                }
                if(result=='1')
                {   
                jQuery.fancybox({
                    href: '#contact-popup'
                });
                jQuery('#contactname').val('');
                jQuery('#contactemail').val('');
                jQuery('#contactphone').val('');
                jQuery('#contactaddress').val('');
                jQuery('#contactsubject').val('');

                console.log ( s );
              } 
            }
        });


        }
}
function contact_validations(){
event.preventDefault();
var name=jQuery('#contactname').val();
var cemail=jQuery('#contactemail').val();
var tel=jQuery('#contactphone').val();
var address=jQuery('#contactaddress').val();
var message=jQuery('#contactsubject').val();
var s=真;
if(name=''| | name==null){
jQuery('#name_err').html('请输入您的姓名');
s=假;
}否则{
jQuery('#name_err').html('';
}
如果(cemail=''){
jQuery('#email_err').html('请输入email');
s=假;
}否则{
var x=cemail;
var atpos=x.indexOf(“@”);
var dotpos=x.lastIndexOf(“.”);

如果(atpos问题是您正在将
数据
转换为json,但wp希望一个名为
操作
的字段找到正确的函数,因此您的返回值为0(未找到函数,没有遇到退出,因此返回0)

在本例中,您实际上不需要json值来发送表单,但它需要json响应,因此在php函数中,您应该
json\u encode
您的返回值

jQuery(document).ready(function(){  

        var url = "<?php echo admin_url('admin-ajax.php'); ?>";
        var data = {

            "action": contact_email ,
            "name": name ,
            "email": cemail ,
            "tel": tel ,
            "address": address ,
            "message": message 
        }

        jQuery.ajax({
            type: "POST",
            url: url,   
            contentType: 'JSON',
            //JSON.stringify(data), -->will cause issue
            data: data,
            beforeSend: function(){
                console.log('happened');
            },
            success: function(result) {
                console.log(result);
            }
        });        
});
正在发送Json

如果您愿意,您可以将其他表单值转换为json,并包含在它自己的对象键中

var data={};
data.action= 'hook';
data= JSON.stringify(formData);

等等。

非常感谢大家的帮助。我得到了很多帮助。虽然我发现了问题。问题是wordpress不需要用JSON解析数据。所以我使用了普通类型,它工作正常

我的函数contact_email上也有语法错误。我使用了

$name = $_POST['contactname'];
$email = $_POST['contactemail'];
$phone = $_POST['contactphone'];
$address= $_POST['contactaddress'];
$content= $_POST['contactsubject'];   
我用它的原始数据捕获表单数据,而它应该由AJAX中声明的val捕获。相反,我使用了它,它工作了:

$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['tel'];
$address= $_POST['address'];
$content= $_POST['message'];
以下是更新的代码:

Jquery:

function contact_validations(){
var name= jQuery('#contactname').val();
var cemail= jQuery('#contactemail').val();
var tel= jQuery('#contactphone').val();
var address= jQuery('#contactaddress').val();
var message= jQuery('#contactsubject').val();
var s=true;

if(name==''|| name==null ){
    jQuery('#name_err').html('Please enter your name');
    s=false;
    }else{  
        jQuery('#name_err').html('');
        }

if(cemail==''){
    jQuery('#email_err').html('Please enter email');
    s=false;
    }else{ 
        var x=cemail;
        var atpos=x.indexOf("@");
        var dotpos=x.lastIndexOf(".");
        if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
            { jQuery('#email_err').html("Please Enter  Valid E-mail Address"); s= false;} 
            else{
                jQuery('#email_err').html('');
                }
        }   


if(tel==''|| tel==null ){
    jQuery('#tel_err').html('Please enter your telephone number');
    s=false;
    }else{  
        jQuery('#tel_err').html('');
        }



if(address=='' || address==null){
    jQuery('#address_err').html('Please enter your address');
    s=false;
    }else{  
        jQuery('#address_err').html('');
        }


if(message=='' || message==null){
    jQuery('#message_err').html('Please enter your message');
    s=false;
    }else{  
        jQuery('#message_err').html('');
        }


if(s)
        {
            var url = "http://localhost:9080/c/wp-admin/admin-ajax.php";

            jQuery.ajax({
            type: "POST",
            url: url,   


            data:"action=contact_email&name="+name+"&email="+cemail+"&tel="+tel+"&address="+address+"&message="+message,
            beforeSend: function(){
                console.log('happened');
                jQuery('#ajax-loader').show();
                jQuery('#ajax-loader').html('<img src="http://localhost:9080/c/wp-content/themes/aussie/images/ajax-loader.gif">');
                },
            success: function(result) {
                jQuery('#ajax-loader').hide();
                console.log(result);


                if(result=='0')
                {
                    console.log("No Result")
                }
                if(result=='1')
                {   
                jQuery.fancybox({
                    href: '#contact-popup'
                });
                jQuery('#contactname').val('');
                jQuery('#contactemail').val('');
                jQuery('#contactphone').val('');
                jQuery('#contactaddress').val('');
                jQuery('#contactsubject').val('');

                console.log ( s );
              } 
            }
        });


        }

}
function contact_validations(){
var name=jQuery('#contactname').val();
var cemail=jQuery('#contactemail').val();
var tel=jQuery('#contactphone').val();
var address=jQuery('#contactaddress').val();
var message=jQuery('#contactsubject').val();
var s=真;
if(name=''| | name==null){
jQuery('#name_err').html('请输入您的姓名');
s=假;
}否则{
jQuery('#name_err').html('';
}
如果(cemail=''){
jQuery('#email_err').html('请输入email');
s=假;
}否则{
var x=cemail;
var atpos=x.indexOf(“@”);
var dotpos=x.lastIndexOf(“.”);
如果(atpos)

您需要包括这些PHP函数
exit();
die()
在函数的末尾

什么确切地返回0?当您在浏览器中加载php页面时会发生什么?但是您的
成功
方法根本没有返回任何内容…您的意思是
结果==“0”
?我附加了一个screenshot@meviusYea
result=='0'
。根据jquery
success函数(任何数据,字符串textStatus,jqXHR jqXHR)
。我的数据返回0。非常感谢您的解决方案伙伴。我尝试了您的方法,但确切的代码不起作用,但我想到了。。
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['tel'];
$address= $_POST['address'];
$content= $_POST['message'];
function contact_validations(){
var name= jQuery('#contactname').val();
var cemail= jQuery('#contactemail').val();
var tel= jQuery('#contactphone').val();
var address= jQuery('#contactaddress').val();
var message= jQuery('#contactsubject').val();
var s=true;

if(name==''|| name==null ){
    jQuery('#name_err').html('Please enter your name');
    s=false;
    }else{  
        jQuery('#name_err').html('');
        }

if(cemail==''){
    jQuery('#email_err').html('Please enter email');
    s=false;
    }else{ 
        var x=cemail;
        var atpos=x.indexOf("@");
        var dotpos=x.lastIndexOf(".");
        if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
            { jQuery('#email_err').html("Please Enter  Valid E-mail Address"); s= false;} 
            else{
                jQuery('#email_err').html('');
                }
        }   


if(tel==''|| tel==null ){
    jQuery('#tel_err').html('Please enter your telephone number');
    s=false;
    }else{  
        jQuery('#tel_err').html('');
        }



if(address=='' || address==null){
    jQuery('#address_err').html('Please enter your address');
    s=false;
    }else{  
        jQuery('#address_err').html('');
        }


if(message=='' || message==null){
    jQuery('#message_err').html('Please enter your message');
    s=false;
    }else{  
        jQuery('#message_err').html('');
        }


if(s)
        {
            var url = "http://localhost:9080/c/wp-admin/admin-ajax.php";

            jQuery.ajax({
            type: "POST",
            url: url,   


            data:"action=contact_email&name="+name+"&email="+cemail+"&tel="+tel+"&address="+address+"&message="+message,
            beforeSend: function(){
                console.log('happened');
                jQuery('#ajax-loader').show();
                jQuery('#ajax-loader').html('<img src="http://localhost:9080/c/wp-content/themes/aussie/images/ajax-loader.gif">');
                },
            success: function(result) {
                jQuery('#ajax-loader').hide();
                console.log(result);


                if(result=='0')
                {
                    console.log("No Result")
                }
                if(result=='1')
                {   
                jQuery.fancybox({
                    href: '#contact-popup'
                });
                jQuery('#contactname').val('');
                jQuery('#contactemail').val('');
                jQuery('#contactphone').val('');
                jQuery('#contactaddress').val('');
                jQuery('#contactsubject').val('');

                console.log ( s );
              } 
            }
        });


        }

}
function contact_email() {



            $url = get_bloginfo('url');
            $storeemail = get_option('contactemailstored'); 
            $to = $storeemail['contactemail'];
            $subject = $url . ' - Contact';
            $name = $_POST['name'];
            $email = $_POST['email'];
            $phone = $_POST['tel'];
            $address= $_POST['address'];
            $content= $_POST['message'];                                            
            $message = '<br>'.'Name:- ' .  $name . '<br>';
            $message  .= 'Email- ' . $email . '<br>';
            $message  .= 'Phone:- ' . $phone . '<br>';
            $message  .= 'Address  :' . $address  . '<br>';
            $message  .= 'Subject  :' . $content  . '<br>';


            $sent_message = wp_mail( $to , $subject, $message ); 

        if ( $sent_message ) {
            // the message was sent...
            echo '1';
        } else {
            // the message was not sent...
            echo '0';
        }

         exit;


    }
add_action('wp_ajax_contact_email', 'contact_email');

add_action('wp_ajax_nopriv_contact_email', 'contact_email');
function contact_email() {

         //your code
         exit();
         die();
}