2013-01-06 52 views
0

我想再次向API發出一個Ajax搜索請求,並將數據返回給我的PHP文件,現在我正在使用Javascript和jQuery來完成這項工作。但是我想讓PHP完成所有工作,只是因爲我不希望我的API密鑰公開,而且我可能想要將數據進一步轉換爲數據庫。它似乎應該是簡單的,但我不知道如何做到乾淨,調用JavaScript和返回或如何「集成」與PHP。做一個Ajax GET請求將數據返回給PHP

我做我的PHP中的MVC模式,就像這樣:

控制器從「mastercontroller /指數」之稱:

class SearchController { 

    public function DoControl($view, $model) { 
     $ret = ""; 

     $ret .= $view->GetSearchForm(); 

     if($view->TriedToSearch()) { 
      if($view->GetSearchString()) { 
       $ret .= $model->CheckSearchString($view->GetSearchString()); 
      } else { 
       // Didn't search for anything 
      } 
     } else { 
      // Didn't press the search button 
     } 

     return $ret; 
    } 
} 

我的看法是返回一個HTML表單,檢查是否提交被壓並返回搜索字符串,我發送到我的模型上面。

型號:

class SearchModel { 

    public function CheckSearchString($searchString) { 
     // 1. Call Googlebooks api with the searchstring 
     // 2. Get JSON response to return to the controller 
     // 3. The controller sends the data to the View for rendering 
    } 
} 

我只是想不通我應該怎麼做吧。

回答

1

我不完全確定,但你似乎在問如何在沒有JavaScript的情況下執行AJAX請求。你不能那麼做 - 不可能在沒有JavaScript的情況下使用XmlHttpRequest對象。根據傳說,這就是AJAX名稱中「J」的起源。

聽起來你需要使用REST來調用特定的API。 RESTful狀態允許您使用Web服務根據預定義的API返回特定數據。數據可以用XML或JSON返回。

您可以使用Google爲您提供的任何密鑰,通過PHP的cURL實現輕鬆完成此操作。

請參閱Google的Google Books API Family頁面,以獲取PHP API和示例代碼的鏈接。

+0

我以前見過這個,但我認爲它可以沒有捲曲。除了我上面提示的內容之外,是否還有其他缺點? AJAX使用的「建議」是什麼? – oskarno

+1

建議是:不要使用'eval'來解析JSON,有更安全的方法來做到這一點。更好的是,使用具有AJAX支持的庫或框架。 jQuery對此很有用,而且非常易於使用。使用JavaScript的缺點:1.正如你所說,任何人都可以複製你的代碼,但是使用縮小和縮小技術會讓任何人都很難輕易重用你的JavaScript; 2.跨站腳本限制意味着你不能在不同的域中使用AJAX。這就是爲什麼在大多數情況下使用Web服務是您唯一的選擇。 –

-1

下面的練習對你有用嗎?如果你只是想在你的代碼中實現ajax功能。

Simple AJAX - PHP and Javascript

我是誤將內容遺憾。如何以下兩個:

simple http request example in php
PHP HTTP-Request *從另一個計算器問題

但我認爲AJAX是在客戶端程序的含義爲主。在服務器端,只需將其稱爲http請求。

+0

比第一個鏈接更好的鏈接,謝謝。所以它是服務器端的HTTP請求,還是客戶端的Ajax?在JavaScript中做這一切有什麼不利嗎?除了緩存大量數據並「隱藏」您的API密鑰? – oskarno

+0

我想@IanAtkin給你提供恰當的建議。但是對於你現在正在做的事情(通過在客戶端使用ajax),也許稱它爲web2.0將是合適的,正如在web2.0中,如果你以正確的方式設計你的程序,在很多情況下使用ajax。 –

+0

然後我會給他正確的答案。但是,是的,我不確定是否需要實際存儲任何重量,我認爲Web Storage會這樣做。我還寫了js,以便我可以添加書籤,所以它只是公開的API密鑰......似乎如果我能以某種方式隱藏它,則會降低Ajax的缺點。 – oskarno