2014-09-02 68 views
1

我希望有人能夠幫助這一點,我有一個形式signup.php與AJAX是POST到另一個頁面register.php。我無法從在register.php文件中調用的函數獲得json響應。我將函數的結果編碼在register.php文件中,但註冊完成後沒有任何內容顯示出來。我在瀏覽器上設置了調試器以遵循網絡響應,出於某種原因,頭文件content-type是text/html,不知道是否是問題所在。JSON:響應不過來

我想要做的是在成功顯示來自該功能的響應,但它不工作。這是我目前的代碼。

signup.php

<script> 
    $(document).ready(function() 
    { 
     $("#submit").click(function() 
     { 
      var formData = $("#signup").serializeArray(); 
      $.ajax(
        { 
         type: "POST", 
         url: "../pages/register.php", 
         cache: false, 
         dataType: 'json', 
         data: formData, 
         success: function(response) { 
          $('#message').html(response); 
         } 
        }); 
      return false; 
     }); 
    }); 
</script> 

<div data-role="page" data-theme="a"> 
    <div data-role="header" data-position="inline"> 
     <h1>Carelincs</h1> 
    </div> 
    <div data-role="content" data-theme="a"> 
     <form action="" method="POST" id="signup"> 
      <label for="email">Email:</label> 
      <input type="email" name="email" placeholder="eMail"/> 
      <br /> 
      <label for="username">Username:</label> 
      <input type="text" name="username" placeholder="User Name"/> 
      <br /> 
      <label for="password">Password:</label> 
      <input type="password" name="password" placeholder="Password"/> 
      <br /> 
      <label for="confirm password">Confirm Password</label> 
      <input type="password" name="repeatpassword" placeholder="Confirm Password"/> 
      <br /> 
      <button type="submit" id="submit">Submit</button> 
     </form> 

     <p id="message"></p> 
     <div data-role="popup" id="validate" class=""> 
      <p>Account created! Activation email has been sent, check your email.</p> 
     </div> 
    </div> 
</div> 

register.php

<?php 


require_once("../auth/config.class.php"); 
require_once("../auth/auth.class.php"); 

$config = new Config; 

$dbh = new PDO("mysql:host=" . $config-> dbhost . ";dbname=" . $config->dbname, $config->dbuser, $config->dbpass); 


$auth = new Auth($dbh, $config); 



$email = $_POST["email"]; 
$username = $_POST["username"]; 
$password = $_POST["password"]; 
$repeatpassword = $_POST["repeatpassword"]; 




$register = $auth->register($email, $username, $password, $repeatpassword); 


// Temporary just so you can see what's going on : 

echo json_encode($register); 
?> 
+1

什麼'response'包含JSON數據,你做了'的console.log (響應);'?如果它是一個對象,你不能在'.html()'中使用它。 – jeroen 2014-09-02 01:02:34

+1

在輸出你的JSON之前,嘗試'header('Content-Type:application/json')',因爲AJAX方法會顯式地說你期待它,所以它會查找它:'dataType:'json','。 – 2014-09-02 01:02:47

+0

同時檢查AJAX調用中的「錯誤」。如果你的東西不能被翻譯成JSON,jQuery會錯誤地調用該函數。 console.log()也是如此。 – Robbie 2014-09-02 01:27:59

回答

0

如果你要顯示的數據,你必須訪問該對象的字符串:

所以對於你的情況,你可以將標籤更改爲div

<div id="message"></div> 

,然後分析在該專區

$('#message').html('<p> code: ' + response.code + '</p>'); 
$('#message').append('<p> message: ' + response.message+ '</p>'); 
+0

這個作品謝謝。 – Keez 2014-09-02 03:09:38