0

晚上好,

我正在开发一个表单处理器,该处理器确定发送给它的表单处理和电子邮件/有时需要将结果返回到我的 jquery 以进行进一步的客户端处理。我遇到的问题是第一次运行脚本时它返回数组,但任何后续运行都不会返回数据。

PHP的

    switch ($form){
    case 'cta':
        echo json_encode(array('callback' => 'cta'));
        //echo"";
        break;
    case "questionaire":

        echo json_encode(array('callback' => 'quetionaire'));
        break;
    case "contact":

        echo json_encode(array('callback' => 'contact'));
}

jQuery

function doEmail(form){
$.ajax({
   data: $(form).serialize(),
   type: 'POST',
   url: 'core/process.php',
   dataType: 'json',
   success: function(data){
    $(form +' input, textarea').each(function(){$(this).val("") })
    $('#lightbox').fadeOut(600)
    $('#responder').fadeOut(600)
    alert('form name '+ data.callback);

   }
 })     
}
function inputProcessor(event, form){
var $name = $(form + ' input#name').val();
var $phone = $(form + ' input#phone').val();
var $email = $(form + ' input#email').val();
var $msg = $(form + ' textarea#msg').val();

var $i = 0;
var $i1 = 0;
$(form +' [req=yes]').each(function() {
    console.log('step 1')
        $i++;
        $(this).css('background-color', '');
        if(!$(this).val().length) {
            event.preventDefault();
            $(this).css('background-color', '#ffd7d7');                
        }
    });
    $(form +' [req=yes]').each(function() {
        console.log('step 2')
        if($(this).val().length > 0){
            event.preventDefault();
            $i1++;                
        }
    });
    //if($i1 === $i){            
        var result = regex.test($email)
        console.log('step 3')
        if (result === true){
            event.preventDefault();
            console.log('Testing Email')
            doEmail(form);
        }else{
            $(form +' input#email').css('background-color', '#ffd7d7');                
        }                
    //}
}

还应该注意的是,该站点从不刷新所有驻留在隐藏 div 中的内容,这些内容在单击“页面”链接时会显示出来。

提前致谢

编辑“我实际上必须退出浏览器并重新启动它才能获得一个新数组”

编辑 2

1 的 3 形式

<form id="cta"  method="post">
<input type="text" req="yes" id="name" class="input"   name="name" placeholder="Full Name"/><br>
<input type="text" req="yes" id="phone" class="input" name="phone" placeholder="Phone Number"/><br>
<input type="text" req="yes" id="email" class="input" name="email" placeholder="Email Address"/><br>     
<input type="hidden" name="form" value="cta">
<span id="submit_btn">Submit entry</span>
</form>

3 个表格中的 2 个

<form id="contact_form" class=contact_form method="post">                            
<input type="text" req="yes" id="name" class="input3" name="name" placeholder="Name"/>
<br>  <br>
<input type="text" req="yes" id="phone" class="input3" name="phone" placeholder="Phone"/>
<br><br>
<input type="text" req="yes" id="email" class="input3" name="email" placeholder="Email"/>
<br><br>
<textarea id="msg" name="msg" placeholder="Type your message here" class="input3" rows="4"></textarea><br>
<input type="hidden" name="form" value="contact">
<span class="contact_button" id="SubmitContact"><div id="contact_submit">Send message</div></span>
</form>

3 个表格中的 3 个

<form id="response" class=form1  method="post">

<input type="text" req="yes" id="name" class="input2" name="name" placeholder="Name"/>
<br>
<input type="text" req="yes" id="phone" class="input2" name="phone" placeholder="Phone"/>
<br>
<input type="text" req="yes" id="email" class="input2" name="email" placeholder="Email"/>
<br>
<textarea id="msg" name="msg" placeholder="Type your message here" class="input2" rows="4"></textarea><br>
<br>
<input type="hidden" name="form" value="questionaire">
<span class="submit_button" id="Submit"><div id="submit">Send message</div></span>
</form>
4

1 回答 1

0

好的,所以我在睡了一晚并意识到我需要取消设置表单变量后回答了我自己的问题。

 var result = regex.test($email)
        console.log('step 3')
        if (result === true){
            event.preventDefault();
            console.log('Testing Email')
            formId = $(form +' input#formId').val();
            if(formId === 'cta'){
                $('#cta_form').children().fadeOut(600)
                window.location.href = 'docs/medical-alert.pdf';
            }
            doEmail(form, formId);
        }else{
            $(form +' input#email').css('background-color', '#ffd7d7');                
        }
        $(form).remove() 
于 2012-11-28T19:58:34.597 回答