0

I am developing a wordpress plugin where I use an ajax call to submit form data, it was working fine and then all of a sudden I get a console error saying that ajaxurl (the url passed to the ajax post) is not defined? My jQuery function:

 $(".button").click(function() {

            $(".error").hide();

            var name = $(":input.name").val();
            if (name == "") {

                $("label#nameErr").show();
                $(":input.name").focus();
                return false;
            }

            var email = $(":input.email").val();
            if (email == "") {

                $("label#emailErr").show();
                $(":input.email").focus();
                return false;
            }


            var phone = $(":input.phone").val();
            if ((phone == "") || (isNaN(phone))) {

                $("label#phoneErr").show();
                $(":input.phone").focus();
                return false;
            }

            var info = 'name:' + name + '&email:' + email + '&phone:' + phone;
            var ajaxurl = '<?php echo admin_url("admin-ajax.php"); ?>';
            alert(info);

            jQuery.ajax({

                type:"post",
                dataType:"json",
                url: ajaxurl,
                data: {action: 'submit_data', info: info},
                success: function(response) {
                    if (response.type == "success") {

                        alert("success");
                    }
                    else {

                        alert("fail");
                    }
                }
            });

            return false;               

        });

The var ajaxurl = ''; line is a solution I just found on the web but this now leaves me with an error of 403 forbidden.

  • Try var ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>'; – user27457 Apr 3 '14 at 20:31
  • 403 forbidden was sent by the HTTP server so your PHP code did execute it just generated a bad URL. – user27457 Apr 3 '14 at 20:39
  • Strangely enough I managed to fix it by changing 'url: ajaxurl' to 'url: myAjax.ajaxurl' ... Thanks for the help though peeps – Bob Apr 3 '14 at 21:40
  • If you have the time, I would be interested in knowing if the change I suggested would also work. If you are too busy don't worry about it - I am just curious. – user27457 Apr 3 '14 at 22:07
  • Where is this code? is it in a .js file? Inline? Is the file an AJAX handler? A page template? More details are necessary. As a sidenote, you shouldn't be able to put PHP tags inside a javascript file. If you can then you've either not told us something or something is very wrong – Tom J Nowell Aug 15 '14 at 18:16
1

take a look here:

http://codex.wordpress.org/Function_Reference/wp_localize_script

First add Data in your php file

// Register the script first.

wp_register_script( 'some_handle', 'path/to/myscript.js' );

// Now we can localize the script with our data.

$translation_array = array( 'some_string' => __( 'Some string to translate' ), 'a_value' => '10' );

wp_localize_script( 'some_handle', 'object_name', $translation_array );

// The script can be enqueued now or later.
wp_enqueue_script( 'some_handle' );

?>

After that you can use the data in js

alert(object_name.some_string);

// alerts 'Some string to translate'

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.