2011-08-25 2 views
6

Ajax를 통해 PHP 스크립트로 문의 양식을 제출할 때 문제가 있습니다. 연락처 스크립트뿐만 아니라 이전에 jQuery/Ajax 함수를 사용했지만이 경우에는 프로세스가 ajax 요청까지 실행 된 다음 오류 (빈 문자열)가 반환됩니다.jQuery AJAX 양식 오류입니다. 빈 문자열

$(document).ready(function(){ 
    jQuery("#sendmail").click(function(){ 
     var name = $("#name").val(); 
     var phone = $("#phone").val(); 
     var email = $("#email").val(); 
     var text = $("#message").val(); 

     //var datastr ='name=' + name + '&mail=' + mail + '&subject=' + subject + '&text=' + text; 
     var datastr ='name=' + name + '&phone=' + phone + '&email=' + email + '&text=' + text; 
     $("#form-div").css("float", "left"); 
     $("#form-div").html("<p>Thank you for contacting Stillframe Photography.</p><p>Please wait for just a few moments while your enquiry is being sent.</p>"); 
     $("#form-div").fadeIn("slow"); 

     alert(datastr); 

     jQuery.ajax({ 
      type: "POST", 
      url: "contact.script.php", 
      data: datastr, 
      success: function(html){ 
      $("#response").fadeIn("slow"); 
      $("#response").html(html); 
      //setTimeout('$("#response").fadeOut("slow")',2000); 
      } 
      ,error: function (XMLHttpRequest, textStatus, errorThrown) { 
           $("#response").html('there was an error'); 
          console.log('error thrown'); 
          console.log(errorThrown); 
      } 
     }); 
    }); 
}); 
당신은 http://www.stillframe.com.au/test.php에서 동작 페이지를 확인하실 수 있으며, 위와 같은 링크에서의 페이지 미디어없이 양식을 볼 수 있지만

나는 또한 다른 않고 스크립트를 test2.php 추가 한

jQuery는 동일한 URL이지만 test3.php는 연락처 PHP 스크립트에 직접 게시하여 해당 스크립트에 오류가 없음을 확인합니다.

SOLVED : 머리에서 기본 href 태그를 제거하면 스크립트가 올바르게 작동합니다.

+0

귀하의 URL에 데이터가 포함되어 있는지 확인하고 '데이터'줄을 제거 했습니까? url : 'contact.script.php? name ='+ name + '& phone ='+ 전화 번호 + & 이메일 = '+ 이메일 +'& text = '+ 텍스트, –

+0

test2.php에 오류가 표시되지 않는 것 같습니다. 일하는거야? –

+0

제임스 감사합니다. 테스트 2에서 '연락을 취해 주셔서 감사합니다'라는 응답을 받았습니까? 아니면 '오류가 발생했습니다'응답을 받았습니까? –

답변

-4

다음과 같은 이유로 원시 자바 스크립트에서 ajax를 사용하는 것이 좋습니다.

  1. 코드는 매우 간단하고 짧습니다.
  2. 오류로 끝나지 않을 것입니다.
  3. 당신은 자바 스크립트에서 변수를 보내고 나머지는 올바른 휴식을 취할 것입니다. 아래에 샘플 코드를 추가하십시오. 매개 변수에

    function insert(){ 
    if(window.XMLHttpRequest) 
    { 
        xmlhttp = new window.XMLHttpRequest(); 
    } 
    else 
    { 
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); 
    } 
    
    xmlhttp.onreadystatechange = function() { 
        if(xmlhttp.readyState == '4' && xmlhttp.status == '200') 
        { 
         document.getElementById('msg').innerHTML = xmlhttp.responseText;  
        } 
    } 
    
    name = document.getElementById('insert').value; 
    
    parameters = 'insert=' + name; 
    
    xmlhttp.open('POST', 'day3.include.php', true); 
    xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 
    xmlhttp.send(parameters); 
    

    }

은 모든 변수를 따라 통과와 PHP의 응답을 표시하는 DIV 번호의 MSG를 만듭니다. 당신이 어떤 혼란이 대신 필드로 필드를 사용하는 http://www.thetutlage.com

+5

-1. "결코"오류로 끝나지 않습니까? 정말? 나는 길을 찾아 낼 수있을 것이라고 확신한다. 귀하의 답변은 순수한 선호이며, HE가 프로그래밍 한 방식으로 OP 문제를 해결하지 못합니다. – bpeterson76

8

에 날 다시 요청이있는 경우

양식 ID <form id="myform">를 사용하여 직렬화. 시도해보십시오 :

$(document).ready(function(){ 
    jQuery("#sendmail").click(function(){ 
     jQuery.ajax({ 
      type: "POST", 
      url: "contact.script.php", 
      data: $('#myform').serialize(), 
      cache: false, 
      success: function(output) { 
       $("#form-div").css("float", "left"); 
       $("#form-div").html("<p>Thank you for contacting Stillframe Photography.</p><p>Please wait for just a few moments while your enquiry is being sent.</p>"); 
       $("#form-div").fadeIn("slow"); 
       $("#response").html(output); 
       $("#response").fadeIn("slow"); 
       //setTimeout('$("#response").fadeOut("slow")',2000); 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
           $("#response").html('there was an error'); 
          console.log('error thrown'); 
          console.log(errorThrown); 
      } 
     }); 
    }); 
}); 
+0

도움 주셔서 감사합니다. 이 스크립트는 많은 예외 오류를 생성했습니다. –

+1

어떤 종류의 오류가 있습니까? 그들은 무엇인가? –