2014-09-24 73 views
0

我需要Ajax幫助。 我在線獲得了此代碼。 此功能是檢查contact.phpAjax函數學習

我有幾個問題,所以有人可以幫助我。
我的問題:
1.這段代碼是否可以運行?
2.有人可以解釋我第4行和第5行的功能是什麼。它似乎將數據發送到contact.php,但返回的是什麼?

阿賈克斯:

var validateEmailForm = { 
dataType: 'json', 
     submit: function(form) { 
     var redirect = false; 
     $.ajax('contact.php', {data:{'email':form.email.value}}).done(function(data) { 
     if (typeof(data) == 'object') { 
        if (data.status == 'valid') { 
         form.submit(); 
        } else if(data.status !=='valid' {  
       alert('The e-mail address entered is wrong.'); 
         } 
       } else { 
        alert('Failed to connect to the server.'); 
        } 
      } 
     } 
    } 

Contact.php:

<?php 
error_reporting(0); 

$email = $_POST['email']; 
if (isset($_$POST['email'])) 
{ 
    // How to return valid to the ajax 
} else { 
    // How to return invalid to the ajax. 
} 

?> 
+0

回覆:你的問題: 1)「好」是主觀的。 2)試試看。 – Celeo 2014-09-24 23:16:35

+0

@Celeo,我的問題是與PHP ..我想知道如何發送data.status ==有效的ajax ..我一直試圖和失敗,這就是爲什麼我張貼在stackoverflow。 – user3671699 2014-09-24 23:17:44

+0

您是否嘗試添加調試語句以實際查看返回的內容? – 2014-09-24 23:17:46

回答

0

AJAX比聽起來要容易得多。你只需要看幾個很好的例子。

嘗試這些:

A simple example

More complicated example

Populate dropdown 2 based on selection in dropdown 1

https://stackoverflow.com/questions/25945137/php-fetch-content-from-one-form-and-update-it-in-other-form/25954450#25954450


以上例子說明了幾件事情:

(1)有四種格式爲AJAX請求 - 全$.ajax()結構,以及三個快捷結構($.post()$.get()$.load()

除非你很擅長AJAX,我建議使用一個正確格式化的$.ajax()代碼塊,這就是上面的例子演示的內容。這樣的代碼塊看起來像這樣:

$('#formID').submit({ 
    $.ajax({ 
     type: 'post', 
     url: 'contact.php', 
    dataType: 'json', 
     data: 'email=' + form.email.value 
    }).done(function(data) { 
     if (typeof(data) == 'object') { 
      if (data.status == 'valid') { 
       form.submit(); 
      } else if(data.status !=='valid' {  
       alert('The e-mail address entered is wrong.'); 
       return false; 
      } else { 
       alert('Failed to connect to the server.'); 
       return false; 
      } 
     } 
    }); 
}); 

(2)在一個$.ajax()代碼塊,則data:行指定被髮送到處理器PHP文件中的數據。

(3)dataType:行指定ajax代碼塊預期從接收的PHP處理器文件的數據類型。除非另有說明,否則默認的數據類型是html。

(4)在PHP處理器文件中,通過echo命令將數據返回給AJAX代碼塊。無論數據是被返回的HTML,文本或JSON,它是echo版回AJAX程序,就像這樣:

<?php 

//perform MySQL search here. For eg, get array $result with: $result['firstname'] and $result['lastname'] 

$out = '<div id="myresponse">'; 
$out .= 'First Name: <input type="text" value="' .$result['firstname']. '" />'; 
$out .= 'Last Name: <input type="text" value="' .$result['lastname']. '" />'; 
$out .= '</div>'; 

echo $out; 

請嘗試一些自己上面的例子中,你會看到它是如何工作。

沒有必要使用json發送/返回數據。然而,json是一個有用的格式發送數組數據,但正如你所看到的,你可以在PHP端構建一個完整的html響應並回顯完成的標記。


因此,要明確回答你的第二個問題,你只需要echo回一些數據。這是PHP文件的工作:

(1)從AJAX程序接收數據,

(2)利用這些數據在某種的查找(通常在數據庫中),

(3)構造的響應,並且

(4)echo(NOT return)的響應返回到AJAX例程的success:.done()功能。

+0

這些是回聲?我正在尋找價值威懾在PHP返回像OhGodWhy發佈。 – user3671699 2014-09-24 23:23:01

+0

查看更新的答案。 *請嘗試使用頂部包含的簡化示例。*請注意,json是發送數組數據的一種很好的格式,但它引入了一些複雜性,在您的AJAX職業生涯中此時可能不需要這麼做。 – gibberish 2014-09-25 15:05:08

0

你需要一個JSON_encoded數組的形式返回給Ajax功能,如下圖所示:

$email = $_POST['email']; 
$status = false; 
if (isset($_$POST['email'])) 
{ 
    $status = 'success' 
} else { 
    $status = false 
} 
echo json_encode(array('status' => $status)); 

>

此外,添加dataType: 'json'$.ajax()使遞延功能可以自動分析它是這樣?

刪除typeof(),因爲我們知道我們期待的回報。

+0

你能幫我解決json數據類型的問題嗎? 我是JSON新手,我只知道ajax和php :( – user3671699 2014-09-24 23:21:52

+0

所以我需要改變我的ajax條件而不是有效的,更改成功和false? – user3671699 2014-09-24 23:24:19

+0

我剛剛編輯我的ajax與數據類型..請讓我知道如果我是正確的或錯誤的提前感謝。 – user3671699 2014-09-24 23:29:48