2011-10-12 58 views
4

jQuery的AJAX功能,我們通過jQuery的AJAX與JSON數據類型,正從PHP值的完整代碼。這裏是代碼。使用與數據類型HTML

HTML代碼

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Ajax submit</title> 
    <link href="css/main.css" type="text/css" media="screen, projection"rel="stylesheet" /> 
</head> 

<body> 
    <div id="wrapper"> 
     <div id="message" style="display: none;"> 
     </div> 
     <div id="waiting" style="display: none;"> 
      Please wait<br /> 
      <img src="images/ajax-loader.gif" title="Loader" alt="Loader" /> 
     </div> 
     <form action="" id="demoForm" method="post"> 
      <fieldset> 
       <legend>Demo form</legend> 
       <span style="font-size: 0.9em;">TEST by ROD</span> 
       <p> 
        <label for="email">E-Mail:</label> 
        <input type="text" name="email" id="email" value="" /> 
       </p> 
       <p> 
        <input type="submit" name="submit" id="submit" style="float: right; clear: both; margin-right: 3px;" value="Submit" /> 
       </p> 
      </fieldset> 
     </form> 
    </div> 
    <script type="text/javascript" src="js/jquery/jquery-1.3.2.js"></script> 
    <script type="text/javascript" src="js/ajaxSubmit.js"></script> 
</body> 
</html> 

PHP代碼

sleep(3); 

if (empty($_POST['email'])) { 
    $return['error'] = true; 
    $return['msg'] = 'You did not enter you email.'; 
} 
else { 
    $return['error'] = false; 
    $return['msg'] = 'You\'ve entered: ' . $_POST['email'] . '.'; 
} 

echo json_encode($return); 

JS代碼

$(document).ready(function(){ 
$('#submit').click(function() { 

    $('#waiting').show(500); 
    $('#demoForm').hide(0); 
    $('#message').hide(0); 

    $.ajax({ 
     type : 'POST', 
     url : 'post.php', 
     dataType : 'json', 
     data: { 
      email : $('#email').val() 
     }, 
     success : function(data){ 
      $('#waiting').hide(500); 
      $('#message').removeClass().addClass((data.error === true) ? 'error' : 'success') 
       .text(data.msg).show(500); 
      if (data.error === true) 
       $('#demoForm').show(500); 
     }, 
     error : function(XMLHttpRequest, textStatus, errorThrown) { 
      $('#waiting').hide(500); 
      $('#message').removeClass().addClass('error') 
       .text('There was an error.').show(500); 
      $('#demoForm').show(500); 
     } 
    }); 

    return false; 
}); 
    }); 

我只是想移動此代碼轉換爲HTML格式,實際上面這些代碼是由互聯網用戶製作的。由於我在AJAX/JS方面的知識有限。我們無法使用HTML數據類型進行AJAX。

整個計劃是好的,並根據我們的需要。目前我們只想禁用JSON和ENABLE HTML DATATYPE。

+0

您的問題沒有任何意義。你是什​​麼意思禁用json?你想直接從你的PHP而不是JSON返回HTML? –

+0

我看不到任何不使用json的理由。爲什麼你不想使用json? –

+0

當我從JS腳本中刪除JSON代碼。我們得到的錯誤,我這一行$就編輯代碼({ 類型: 'POST', 網址: 'post.php中', 數據類型: 'HTML',........... .......... – PPS

回答

9

這是一個使用dataType html的版本,但這是遠不那麼明確,因爲我返回一個空字符串來指示錯誤。

Ajax調用:

$.ajax({ 
    type : 'POST', 
    url : 'post.php', 
    dataType : 'html', 
    data: { 
     email : $('#email').val() 
    }, 
    success : function(data){ 
     $('#waiting').hide(500); 
     $('#message').removeClass().addClass((data == '') ? 'error' : 'success') 
    .html(data).show(500); 
     if (data == '') { 
      $('#message').html("Format your email correcly"); 
      $('#demoForm').show(500); 
     } 
    }, 
    error : function(XMLHttpRequest, textStatus, errorThrown) { 
     $('#waiting').hide(500); 
     $('#message').removeClass().addClass('error') 
     .text('There was an error.').show(500); 
     $('#demoForm').show(500); 
    } 

});

post.php中

<?php 
sleep(1); 

function processEmail($email) { 
    if (preg_match("#^[a-zA-Z0-9_.-][email protected][a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$#", $email)) { 
     // your logic here (ex: add into database) 
     return true; 
    } 
    return false; 
} 

if (processEmail($_POST['email'])) { 
    echo "<span>Your email is <strong>{$_POST['email']}</strong></span>"; 
} 
+0

不知道Ajax調用的代碼的其餘部分。你所提到的,而且請確認文件,這些文件其餘保持相同? – PPS

+0

是的,一切。別人是一樣的,你可以用我建議更換爲post.php中的所有代碼關於Ajax調用 –

+0

什麼: - $之後(「#demoForm」)顯示(500);} },... 還有更多的代碼? – PPS

1
var datos = $("#id_formulario").serialize(); 
$.ajax({   
    url: "url.php",  
    type: "POST",     
    dataType: "html",     
    data: datos,     
    success: function (prueba) { 
     alert("funciona!"); 
    }//FIN SUCCES 

});//FIN AJAX