2013-06-25 68 views
0

我試圖修復一個簡單的形式,它應該發送一個簡單的電子郵件jQuery的ajax請求沒有啓動 - 沒有錯誤

我沒有收到JavaScript錯誤,但AJAX請求沒有被解僱。我在這裏和谷歌搜索了很多答案,但沒有人幫助我的案例。

以下形式的HTML代碼

<form method="post" id="signupform">  
<input type="text" name="name" id="name" placeholder="Nimi"><br> 
<input type="email" name="email" id="email" placeholder="sähkö[email protected]"><br> 
<p><a href="#" id="send"><b>Ilmoittaudu</b></a></p> 
</form> 
<div id="response"></div> 

這是jQuery的驗證和發送代碼:

<script> 
/* <![CDATA[ */ 
$(document).ready(function(){ 
    $("#countdown").countdown({ 
     date: "13 october 2013 12:00:00", <!--set website launch date and time here--> 
     format: "on" 
     }, 
     function() { 
      // callback function 
     }); 
    var left = $('.newsletter').offset().left; 
    $("#subscribe").click(function(event){ 
     $(".newsletter").show().animate({ left : left }, { duration: 1000 }); 
     event.preventDefault(); 
     return false;    
    }); 
    $(".close1").click(function(event){ 
     $(".newsletter").animate({ left : "110%" }, { duration: 1000 }); 
     event.preventDefault(); 
     return false;    
    }); 
    $("#send").click(function(event){ 
     event.preventDefault(); 
     var cname = $("#signupform").find("#name").val(); 
     var cemail = $("#signupform").find("#email").val(); 
     var errcount=0; 
     if(cname.length < 1) {  
      $(this).parent().find("#name").addClass("error"); 
      errcount = 1; 
     } else 
      $(this).parent().find("#name").removeClass("error"); 
     var emailRegex = new RegExp(/^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$/i); 
     var valid = emailRegex.test(cemail); 
     if (!valid) { 
      $(this).parent().find("#email").addClass("error"); 
      errcount = 1; 
     } else 
      $(this).parent().find("#email").removeClass("error"); 
     if (errcount === 0) { 
      alert('noerror'); 
      //form submitted succesfully 
      $.ajax ({ 
       type: "POST", 
       url: 'send.php', 
       data: { 
        name: cname, 
        email: cemail 
       }, 
       processData: false, 
       async: false, 
       success: function(response) { 
        alert('success'); 
        if (response == 'Kaavake ei ole täytetty oikein') { 
         $('#response').html(response); 
        } else { 
         $('#response').html(response); 
         $('#response').fadeIn('slow');     
        } 
       }, 
       error: function(xhr, text, error) { 
        alert(text); 
        alert(error); 
       }     
      });    
     } else {   
      return false; 
     } 
    }); 
    $("a[data-rel^='prettyPhoto']").prettyPhoto({deeplinking:false}); 
    $(window).resize(function(){ 
     var height=$('.activeslide').height(); 
     var sidebarheight=$('.sidebar').height(); 
     $('.sidebar').css('min-height',height); 
    }); 
    $(window).resize(); 
}); 
/* ]]> */ 
</script> 

顯示與noerrors警報,但沒有成功的警報,我不能請參閱chrome dev-tools網絡中的ajax活動。

這裏從send.php

<?php 

$subject = "Uusi ilmoittautuminen"; 
$error = 0; 
$sendto = '[email protected]'; 
print_r($_POST); 
if (!empty($_POST)) { 
    //validate and strip user data 
    if (!empty($_POST['name'])) { 
     $name = htmlspecialchars(strip_tags($_POST['name'])); 
    } else { 
     $error = 1; 
    } 
    if (!empty($_POST['email'])) { 
     $email = htmlspecialchars(strip_tags($_POST['email'])); 
    } else { 
     $error = 1; 
    } 
    if ($error == 0) { 
     //SENDING SECTION 
     //prepare body 
     $namesender = 'Yhteydenotto'; 
     $header = "MIME-Version: 1.0" . "\r\n". 
      "Content-type: text/plain; charset=utf-8" . "\r\n". 
      "From:Yhteydenotto <[email protected]>\r\n" . 
      "Reply-To:".$name." <".$email.">\r\n". 
      "X-Mailer: PHP/" . phpversion(); 
     $body = "Uusi ilmoittautuminen\n\nNimi: ".$name."\n\nSähköposti: ".$email.""; 
     //prepare subject 
     $newsubject='=?UTF-8?B?'.base64_encode($subject).'?='; 

     //send email 
     $mailresult = mail($sendto, $newsubject, $body, $header); 

     die("<p>Kiitos ilmoittautumisestasi!</p>"); 

    } else { 
     echo 'Kaavake ei ole täytetty oikein'; 
     die; 
    } 

} else { echo 'no direct access allowed'; } 
+0

在控制檯登錄任何錯誤?檢查serialize方法是否正確返回所需的參數。 –

+0

謝謝!我做了一個警告(params);'在var params之後,但警告框沒有顯示?奇怪的是,noerror警報工作..我得到沒有錯誤代碼在開發工具 – Owl

+0

你確定元素存在之前,你試圖把處理程序的對象(例如這是在一個onload或'$(document).ready( );'? – Sumurai8

回答

2

什麼是return false;成功方法之後做的代碼?最好刪除它。此外,你在url: 'send.php';後面加分號應該是一個正常的逗號。
除了一切看起來不錯。

爲了找到這種錯誤,只需檢查控制檯(我認爲)每個瀏覽器都可以使用。有警告和錯誤記錄。

http://jsfiddle.net/EvXgZ/2/那裏你有工作版本只是另外,我有dto更改目標網址工作jsfiddle。

你的Ajax調用應該像

$.ajax ({ 
    type: "POST", 
    url: 'send.php', 
    data: { 
    'name': cname, 
    'email': cemail 
    }, 
    async: false, 
    success: function(response) { 
    alert('success'); 
    if (response == 'Kaavake ei ole täytetty oikein') { 
     $('#response').html(response); 
    } else { 
     $('#response').html(response); 
     $('#response').fadeIn('slow');     
    } 
    }, 
    error: function(xhr, text, error) { 
    alert(text); 
    alert(error); 
    } 
}); 

由於事實上這個版本的作品和所有的混亂粘貼代碼,這是另外一條線粘貼的,因此是前得到一個//的從未行動。還有一件需要注意的事情是,如果您開發並更改您的js文件,您必須確保將它們從緩存中清除,以便您在訪問和測試時真正加載網站上的最新版本

+0

謝謝配合!我替換逗號分號並取消返回false,沒有變化:( – Owl

+0

什麼錯,如果它仍然沒有工作我添加了一個錯誤處理程序來告訴你。 – luk2302

+0

太感謝你了,我編輯我的問題,並且增加了改進的代碼。有了這個代碼,我收到沒有錯誤警報但... – Owl

0

添加

 $("#send").click(function(e){ 
    e.preventDefault() 
    //ajax code  
    }) 
+0

謝謝,我做了,並嘗試用清空緩存..沒有變化 – Owl

0

語法錯誤

$("#send").click(function() { 
    var cname = $("#signupform").find("#name").val(); 
    var cemail = $("#signupform").find("#email").val(); 
    var errcount = 0; 
    if (cname.length < 1) { 
     $(this).parent().find("#name").addClass("error"); 
     errcount = 1; 
    } else 
     $(this).parent().find("#name").removeClass("error"); 
    var emailRegex = new RegExp(/^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$/i); 
    var valid = emailRegex.test(cemail); 
    if (!valid) { 
     $(this).parent().find("#email").addClass("error"); 
     errcount = 1; 
    } else 
     $(this).parent().find("#email").removeClass("error"); 

    if (errcount === 0) { 
     alert('noerror'); 
     // form submitted succesfully 
     $.ajax({ 
      type : "POST", 
      url : 'send.php', 
      data : { 
       name : cname, 
       email : cemail 
      }, //Missing , here 
      processData : false, 
      async : false, 
      success : function(response) { 
       alert('success'); 
       if (response == 'Kaavake ei ole täytetty oikein') { 
        $('#response').html(response); 
       } else { 
        $('#response').html(response); 
        $('#response').fadeIn('slow'); 
       } 
      }, 
      error : function(xhr, text, error) { 
       alert(text); 
       alert(error); 
      } 
     }); 
    } else { 
     return false; 
    } 
}); 
+0

謝謝我添加了失蹤的逗號,仍然沒有改變,但無論如何感謝 – Owl