2013-01-06 76 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