2017-11-12 4 views
1

서버와 통신하고 싶은 양식이 AJAX 게시물을 던집니다. 내가했던 쿼리는 쿼리에서 오류라고하지만 문제가 보이지 않습니다. 다른 AJAX 코드를 시도했지만 if ($ _ POST)를 전달하기 때문에 게시물이 작동하는 것 같습니다.PHP가 AJAX 게시물에서 데이터를 가져 와서 필터링합니다.

$('#submit').click(function(e) { 

    var url = "handler/dForm.php"; // the script where you handle the form input. 

    $.ajax({ 
      type: "POST", 
      url: url, 
      contentType: 'application/json; charset=utf-8', 
      data: $("#idForm").serialize(), // serializes the form's elements. 
      success: function(data) 
      { 
       console.log(data); // show response from the php script. 
      }, 
      error: function(xhr,textStatus,err) 
      { 
       console.log("readyState: " + xhr.readyState); 
       console.log("responseText: "+ xhr.responseText); 
       console.log("status: " + xhr.status); 
       console.log("text status: " + textStatus); 
       console.log("error: " + err); 
      }      
     }); 

    e.preventDefault(); // avoid to execute the actual submit of the form. 
}); 

서버 부분

require_once 'connect.php'; 
$name = isset($_POST['name']) ? $_POST['name'] : ''; 
$subject = isset($_POST['Subject']) ? $_POST['Subject'] : ''; 
$message = isset($_POST['Message']) ? $_POST['Message'] : ''; 
$email = isset($_POST['Email']) ? $_POST['Email'] : ''; 

if (isset($_POST)) { 

$email = $DBcon->real_escape_string($email); 
$message = $DBcon->real_escape_string($message); 
$subject = $DBcon->real_escape_string($subject); 
$name = $DBcon->real_escape_string($name); 

$query = "INSERT INTO customer(name,messaje,subject,email) VALUES('$name','$message','$subject','$email')"; 

    if ($DBcon->query($query)) { 
    $msg = "<div class='alert alert-success'> 
     <span class='glyphicon glyphicon-info-sign'></span> &nbsp; successfully registered ! 
    </div>"; 
    }else { 
    $msg = "<div class='alert alert-danger'> 
     <span class='glyphicon glyphicon-info-sign'></span> &nbsp; error while registering ! 
    </div>"; 
    } 
echo $msg; 


$DBcon->close(); 
}else{ 
    echo "err"; 
} 

HTML 양식 :

<form id="idForm"> 
         <input type="text" class="col-md-6 col-xs-12 name" name='name' placeholder='Nume *'/> 
         <input type="text" class="col-md-6 col-xs-12 Email" name='Email' placeholder='Email *'/> 
         <input type="text" class="col-md-12 col-xs-12 Subject" name='Subject' placeholder='Subiect'/> 
         <textarea type="text" class="col-md-12 col-xs-12 Message" name='Message' placeholder='Mesaj *'></textarea> 
         <div class="cBtn col-xs-12"> 
          <ul> 
           <li class="clear"><a href="javascript:void(0)"><i class="fa fa-times"></i>Sterge campurile</a></li> 
           <li class="send"><a href="javascript:void(0)" id="submit"><i class="fa fa-share"></i>Trimite</a> 
           </li> 
          </ul> 
         </div> 
        </form> 
+0

정확한 오류는 무엇입니까? 그 실수가 무엇인지 모른 채 도움을받는 것은 어려울 것입니다. – DelightedD0D

+0

코드가 맨 아래의 else 문에서'echo "err"; "을 실행한다고 말하는가? 프론트 엔드에 'err'리턴 – DelightedD0D

+1

'$ msg = "오류 설명 :"으로 변경하면 어떻게됩니까? mysqli_error ($ DBcon);'? – DelightedD0D

답변

2

먼저 문제를 내가 볼 그것은 항상 TRUE입니다 if (isset($_POST))이다. 특정 필드가 설정되어 있는지 확인해야합니다. if (isset($_POST['name'])). $query = "INSERT INTO customer(name,messaje,subject,email) VALUES('$name','$message','$subject','$email')";

나는 당신이 메시지 열을 잘못 입력 생각 :

둘째는 행입니다. 당신은 messaje 있습니다.

그리고 디버그 팁으로 이 FALSE 인 경우 echo $DBcon->error;을 사용하십시오.

+0

감사합니다. SyntaxError : 위치 0의 JSON에서 예기치 않은 토큰 S는 무엇입니까? 입력을 검사하기에 real_escape_string이 충분한가요? –

+1

'contentType : 'application/json을 제거하십시오; charset = utf-8 ','ajax 요청으로부터. real_escape_tring 정보 : https://stackoverflow.com/questions/110575/do-htmlspecialchars-and-mysql-real-escape-string-keep-my-php-code-safe-from-inje 또는 https :// /stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string/12118602#12118602 – instead