2016-12-09 136 views
0

我正在尝试构建自己的WordPress主题,它似乎可行,但我遇到了电子邮件表单的问题。当我在适应WordPress之前使用它的代码工作,但现在没有。未找到Ajax调用php,404错误

$(function() { 
$("#contactForm input,#contactForm textarea").jqBootstrapValidation({ 
    preventSubmit: true, 
    submitError: function($form, event, errors) { 
     // additional error messages or events 
    }, 
    submitSuccess: function($form, event) { 
     // Prevent spam click and default submit behaviour 
     $("#btnSubmit").attr("disabled", true); 
     event.preventDefault(); 
     console.log ('1'); 

     // get values from FORM 
     var name = $("input#name").val(); 
     var email = $("input#email").val(); 
     var phone = $("input#phone").val(); 
     var message = $("textarea#message").val(); 
     var firstName = name; // For Success/Failure Message 

     // Check for white space in name for Success/Fail message 
     if (firstName.indexOf(' ') >= 0) { 
      firstName = name.split(' ').slice(0, -1).join(' '); 
      console.log ('2'); 
     } 

     $.ajax({ 
      url: "./mail/contact_me.php", 
      type: "POST", 
      data: { 
       name: name, 
       phone: phone, 
       email: email, 
       message: message 
      }, 
      cache: false, 
      success: function() { 
       // Enable button & show success message 
       console.log ('3'); 

       $("#btnSubmit").attr("disabled", false); 
       $('#success').html("<div class='alert alert-success'>"); 
       $('#success > .alert-success').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;") 
        .append("</button>"); 
       $('#success > .alert-success') 
        .append("<strong>Your message has been sent. </strong>"); 
       $('#success > .alert-success') 
        .append('</div>'); 

JavaScript文件是在这条航线:domain/wp-content/themes/federo/js/contact_me.js

而且PHP文件是在这里:domain/wp-content/themes/federo/mail/contact_me.php

+0

它只是没有找到页面。你应该试试这个:'../ mail/contact_me.php' – Jai

+0

我想错了。我的意思是:如果您将URL替换为:'“/wp-content/themes/federo/mail/contact_me.php”' –

+0

非常感谢!!!它的工作,我觉得像一个愚蠢的,但你的帮助已经很大 – Federo

回答

0

试图改变

url: "./mail/contact_me.php", 

成绝对路径

url: "http://domain/wp-content/themes/federo/mail/contact_me.php", 
+0

谢谢,马格努斯,你是对的 –

+0

是的,它的工作原理,我觉得有点愚蠢,但我真的赞赏你的帮助! – Federo

1

即使@鲁斯兰 - nigmatulin答案会的工作,这是更好地传递URL(和你需要的任何其他东西)wp_localize_script功能,像这样:

wp_localize_script('ajax-script', 'ajax_object', array('ajax_url' => get_template_directory_uri() . '/mail/contact_me.php'); 

在这个例子中:
- ajax-script是手柄你与wp_enqueue_script
使用 - ajax_object是对象,将提供给您的脚本的名称
- 3 paramater是你想值数组传递

然后让你的JS中的,你只需要做ajax_object.ajax_url。在这种情况下(假设federo是你当前的主题),ajax_object.ajax_url将是http://domain/wp-content/themes/federo/mail/contact_me.php

+0

Wp给你的功能,所以使用它的全部潜力,所以在将来你不需要改变你的js中的所有URL。只需更改函数中的URL即可。 –

+0

许多人都非常感谢您的担忧,在这一刻我尝试了以前的解决方案并努力工作,所以我会尝试着改进我在这个主题中的技能。非常感谢你的帮助,我真的赞赏它 – Federo