2016-03-26 106 views
-4

我有一个联系方式:这个脚本为什么不加载?

<form id="contactus" name="contactus" action="html_form_send1.php" method="post"> 
    <label for="name">Name:</label><br /> 
    <input type="text" id="name" name="name" maxlength="50" size="59" autofocus required/><br /><br /> 

    <label for="email">E-Mail Address:</label><br /> 
    <input type="email" id="email" name="email" maxlength="50" size="59" required/><br /><br /> 

    <label for="question">Question:</label><br /> 
    <textarea id="question" name="question" maxlength="1000" cols="50" rows="6" required></textarea><br /><br /> 

    <input class="c1_scButton" type="submit" id="submit" name="submit" value="Send" /> 
</form> 

我希望用这个AJAX代码来调用我的邮箱PHP脚本:

var msg = ""; 
name = $("#name").val(); 
email = $("#email").val(); 
question = $("#question").val(); 

//validation phase 

function isValidEmailAddress(emailAddress) { 
    var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([az]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i); 
    return pattern.test(emailAddress); 
}; 

function validate(e) { 
    if (name == "") { 
    msg = " valid name"; 
    } 

    if (!isValidEmailAddress(email)) { 
    msg = msg + " valid email address"; 
    } 

    if (question == "") { 
    msg = msg + " valid question or comment"; 
    } 
} 

// on submit, Validate then post to PHP mailer script 
$(function() { 
    $("#contactus").on('submit', function(e) { 
    e.preventDefault(); 
    validate(e); 
    if msg != "" { 
     e.preventDefault(); 
     $("#alert").html "Please enter a" + msg; 
    } else { 
     $.post('/html_form_send1.php', $(this).serialize(), function(data) { 
     $('#alert').css(color: "black") 
     $('#alert').html("<h2>Thank you for contacting us!</h2>") 
      .append("<p>We will be in touch soon.</p>"); 
     }).error(function() { 
     $('#alert').css(color: "red") 
     $('#alert').html("<h2>Something went wrong. Your Question was not submitted. /n</h2>").append("<p>Please try again later or email us at <a href=href=" 
      mailto: [email protected] allegroaffiliates.com ? Subject = Contact Us Form " target=" 
      _top ">[email protected]</a> </p>"); 
     }); 
    }; 
    }); 
}); 

脚本被称为在HTML页面的陆续底部脚本,但它不加载。我怀疑这是由于代码错误,但我找不到错误。任何人都可以给我一个想法,为什么它不会加载?

附注:我知道HTML5会验证脚本,但我已经验证了HTML5不可用的时间。

谢谢你的帮助。

+2

您是否检查了控制台的错误? –

+0

有一些语法错误,例如'如果msg!=“”{'或'$(“#alert”)。html“请输入”+ msg;'。控制台会告诉你到底发生了什么问题。 – Marvin

+0

这里突出显示的语法应该告诉你代码有一些错误。使用下降编辑器或IDE,你不会有这些问题。 – Pevara

回答

0

几个故障诊断建议:

(1)当指定AJAX处理器文件中,用户可以在本$.post('html_form_send1.php'或该$.post('./html_form_send1.php'但不是本$.post('/html_form_send1.php'

(2)代替使用快捷代码$.post()的,使用该方法的完整形式,直到你很擅长:

var varvalue = $('#first_name').val(); 
var nutherval = $('#last_name').val(); 
$.ajax({ 
    type: 'post', 
    url: 'your_secondary_file.php', 
    data: 'varname=' +varvalue+ '&lname=' +nutherval, 
    success: function(d){ 
     if (d.length) alert(d); 
    } 
}); 

(3)禁用验证程序,直到其余的工作,那么,当你知道在工作一切正常工作

(4)更改您的ajax处理器文件html_form_send1.php只是回显一个响应,以确保您的AJAX工作。然后,一旦获得响应,将其更改为回显您发送的变量。然后将其构建到最终期望的产品中。但在最初,一些死的简单,就像这样:

your_secondary_file.php:

<?php 
    $first_name = $_POST['varname']; 
    $last_name = $_POST['lname']; 
    echo 'Received: ' .$first_name .' '. $last_name; 
    die(); 

(5)而不是使用.serialize()的,最初只是抢一个或两个字段中手动值,并得到该工作第一。请注意,.serialize()会生成JSON数据,而更简单的方法是直接发布值,如此答案中的示例代码。先让它工作,然后优化。

(6)注意,在AJAX代码块中的dataType:参数是代码来从PHP侧,而不是代码去 PHP端。还要注意,默认值是html,所以如果你没有发回一个JSON对象,那么就把这个参数留下。 (7)在我上面的AJAX和PHP代码示例中,请注意javascript变量名称之间的相关性,它在AJAX代码块中的引用方式以及它在PHP端的接收方式。我非常谨慎地选择了我所选择的名称,以便您一直遵循var name => var value配对。

例如,ID为first_name的输入字段存储在名为varvalue(哑名称但有意)的变量中。这些数据是在AJAX代码块为一个名为varname可变传输,并获得在PHP端为$_POST['varname'],最后储存在PHP作为$first_name


评论some simple AJAX examples - 将它们复制到您的系统和玩耍他们有点。

+0

我会试试这个,谢谢。 –

+0

@DavidBrabson为我的答案增加了一些信息。请查阅。 – gibberish

相关问题