2011-11-08 17 views
1

申し込みフォームにajax + phpを使用しています。 JSサイドフロントエンドとPHPサイドバックエンドの2つのバリデーションがあります。 PHP側にresponseという特別な関数を作成しました.PHPのサイドエラーをJSONデータとして送信します。AjaxからPHP側の応答がありません

問題はです。PHP側からの回答はありません。

firebugで解析されたページ:エラーメッセージ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

'Firebugで分析されたページ:エラーメッセージの取得responseDataはnullです。 (responseData = jQuery.parseJSON(data)) '...これは、あなたが応答を得ていないわけではありません。 'データ'とは何ですか?それは空ですか? – Quentin

+0

あなたのスクリプトの下に 'echo" test ";"を追加するだけで、あなたのスクリプトが何か応答しているかどうかを単純にチェックしようとしましたか? – sascha

答えて

1

です。 Ajaxメソッド。

+0

成功しません!試してみよう! –

+0

アラート(データ)を試してください。成功関数に変換する。それは何を与える? –

+0

アラートを取得する –

関連する問題