Jquery Ajax到drupal到外部站点,阅读响应

时间:2014-08-14 23:04:13

标签: php jquery ajax drupal drupal-7

我有一个drupal网站。

有一个页面(第1页),其中包含一个收集用户信息的表单,并通过AJAX将其提交到Drupal Module页面。

AJAX格式是jquery

var responseTarget = '/site/module/page_name';
  jQuery.post(responseTarget, {
      key1: value1, key2: value2,.......
  }, function(responseText, statusText, xhr) { 
    if (xhr.status === 200) {  
      PROCESS SUCCESS 
    }
    else PROCESS FAILURE

模块页面的URL格式为" site / module / page_name" (第2页)并从模块文件" page_name.tpl.php"构建。

此(第2页)处理用户信息并将其发送到外部服务器。

服务器回复我的(第2页),它通过将值保存到用户帐户来处理响应。

(第2页)然后响应(第1页)上的AJAX调用。

当我的AJAX收到响应时,它是来自Drupal的响应(第2页),而不是来自外部服务器。

  • responseText =整个Drupal page2,因为它是一个模块的一部分,它包含页眉和页脚以及页面处理后的php为HTML,没有对象或值。
  • xhr.status = 200 // Drupal page2成功

我想要做的是在第2页中阅读服务器的响应并将此包传递给AJAX脚本,或者处理第2页中从服务器返回的值并传递status / value / ...回到基于此的AJAX脚本。

我尝试使用Drupal第2页来回显JSON对象,但这是在模块中完成的,Drupal将其作为页面HTML的一部分打印出来。

摘要

[第1页(ajax)] - > [第2页(Drupal模块)] - > [外部服务器]

[外部服务器(修改对象)] - > [第2页(处理对象并将其合并到一个完整的Drupal页面,并删除任何标题,从外部服务器发送的状态] - > [第1页(ajax)从第2页接收状态和数据]

1 个答案:

答案 0 :(得分:0)

对我来说,解决方案是添加一个新页面,例如/site/module/page_name/json,然后在该页面上具有与on(第2页)相同的逻辑,除了该页面仅返回JSON对象。无论如何,这是RESTful API的通常实现。

如果您已经拥有修改(第2页)内容的权利,那么我猜您有权将此额外路径添加到模块hook_menu()