2011-11-08 3 views
1

내 가입 양식에 ajax + php를 사용하고 있습니다. 2 가지 유효성 검사가 있습니다 : JS 사이드 프론트 엔드와 PHP 사이드 백엔드. PHP 측에 response이라는 특수 함수가 생성되었습니다 : PHP 측 오류를 JSON 데이터로 보냅니다.Ajax가 PHP 쪽에서 응답을받지 못합니다.

문제는입니다. PHP 쪽에서 어떤 응답도들을 수 없습니다.

분석 된 방화범 요청 페이지 : 오류 메시지가 발생했습니다. responseData is null. (responseData = jQuery.parseJSON(data))

JS 부분은

//check the form is not currently submitting 
    if ($(this).data('formstatus') !== 'submitting') { 

var form = $(this), 
    formData = form.serialize() + '&formID=' + form.attr('id'), 
    formUrl = form.attr('action'), 
    formMethod = form.attr('method'); 



//add status data to form 
form.data('formstatus', 'submitting'); 

if (validate()) { 
    //send data to server for validation 
    $.ajax({ 
     url: formUrl, 
     type: formMethod, 
     data: formData, 
     success: function (data) { 

      //setup variables 
      var responseData = jQuery.parseJSON(data), 
      cl, text; 

      //response conditional 
      switch (responseData.status) { 
      case 'error': 
      cl = 'error'; 
      text = responseData.message; 
      break; 
      case 'success': 
      cl = 'success'; 
      text = 'Qeydiyyat uğurla başa çatdı'; 
      break; 
      } 


      $.notifyBar({ 
      cls: cl, 
      html: text 
      }); 

     } 
    }); 

} 
form.data('formstatus', 'idle'); 


} 

처럼 보인다 그리고 여기 당신은 $에서

dataType: "json", 

를 추가 할 필요가 PHP 부분

<?php 
require '../common.php'; 

function checkIfEmailExists($email, $stmt) 
{ 
     if ($stmt = $db->prepare("SELECT id FROM TABLE WHERE email=? LIMIT 1")) { 
       $stmt->bind_param("s", $email); 
       $stmt->execute(); 
       $stmt->bind_result($count); 
       $stmt->close(); 
     } 

     return ($count > 0 ? true : false); 
} 


if ($_POST['formID'] == 'signup_form') { 
     // Setting vars 
     $lname  = $_POST['lname']; 
     $fname  = $_POST['fname']; 
     $mname  = $_POST['mname']; 
     $email  = $_POST['email']; 
     $pass   = $_POST['pass']; 
     $confirm_pass = $_POST['confirm_pass']; 

     //===================== 
     //Server side validation >> 


     //First name, middle name, last name check >> 
     if (!$lname) { 
       response('error', 'Familiyanı daxil edin'); 
     } 
     if (!$fname) { 
       response('error', 'Adı daxil edin'); 
     } 
     if (!$mname) { 
       response('error', 'Atanızın adını daxil edin'); 
     } 
     //<< 

     //Pass check >> 
     if (strlen($pass) > 2) { 
       if ($pass == $confirm_pass) { 
         return true; 
       } else { 
         response('error', 'Şifrənin təkrarlanmasında səhv'); 
       } 
     } else { 
       response('error', 'Şifrədə simvolların sayı 4-dən çox olmalıdır'); 
     } 

     //<< 


     //email validation >> 
     if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 
       if (!checkIfEmailExists($email, $stmt)) { 
         return true; 
       } else { 
         response('error', 'Bu ünvanla qeydiyyata alınmış başqa istifadəçi var.'); 
       } 
     } else { 
       response('error', 'Email ünvanını düzgün daxil edin'); 
     } 

     //<< 

     // Create statement object 
     $stmt = $db->stmt_init(); 

     // Create a prepared statement 
     if ($stmt->prepare("INSERT INTO `users` (`fname`, `mname`, `lname`, `email`, `pass`, `reg_dt`) VALUES (?, ?, ?, ?, ?, NOW())")) { 
       // Binding vars 

       $rc = $stmt->bind_param('sssss', $fname, $lname, $mname, $email, $pass) or die('bind_param() failed: ' . htmlspecialchars($stmt->error)); 

       // Execute query 
       $rc = $stmt->execute(); 
       if ($rc) { 
         response('success', 'Qeydiyyat uğurla başa çatdı'); 
       } else { 
         response('error', htmlspecialchars($stmt->error)); 
       } 


       // Close statement object 
       $stmt->close(); 

     } else { 
       response('error', htmlspecialchars($dv->error)); 
     } 



} 
else {response('error', 'Qeydiyyatda problem');} 

     //return json response 
     function response($status, $message) 
     { 
       $data = array(
         'status' => $status, 
         'message' => $message 
       ); 
       echo json_encode($data); 
       die(); 
     } 
?> 
+0

'$ _POST [ 'formID'] == 'signup_form''입니까? 'return true;'어떤 것이나 뭔가를 인쇄하거나 그냥 계속해서 사용하는 것이 아니라 그곳으로 전화가 걸린 것처럼 보입니다. – jprofitt

+0

'방화 광에서 분석 된 페이지 : 오류 메시지 받기 responseData는 null입니다. (responseData = jQuery.parseJSON (data))'... 그렇다고해서 응답을받지 못했다는 의미는 아닙니다. '데이터'란 무엇입니까? 그것은 비어 있습니까? – Quentin

+0

예를 들어 여러분의 include 아래에'echo "test"; "를 추가하여 스크립트가 응답하는지 여부를 단순히 확인하려고 시도 했습니까? – sascha

답변

1

입니다. Ajax 메소드.

+0

성공하지 못했습니다! 시도! –

+0

경고 (데이터)를 시도하십시오. 성공 함수로. 그것은 무엇을 제공합니까? –

+0

알리미 –

관련 문제