【问题标题】:Jquery Ajax to drupal to external site, reading responseJquery Ajax 到 drupal 到外部站点,读取响应
【发布时间】:2014-08-14 23:04:12
【问题描述】:

我有一个 drupal 网站。

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

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,因为它是模块的一部分,它包含页眉和页脚以及作为 HTML 处理的页面的 php,没有对象或值。
  • xhr.status = 200 // Drupal page2 成功

我想做的是在我的页面 2 中读取来自服务器的响应并将此包传递给 AJAX 脚本,或者在页面 2 中处理从服务器返回的值并传递状态/值/...回到基于此的AJAX脚本。

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

总结

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

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

【问题讨论】:

    标签: php jquery ajax drupal drupal-7


    【解决方案1】:

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

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

    【讨论】:

    • 我可以编辑第 2 页,如前所述“我尝试让 Drupal 第 2 页回显 JSON 对象,但这是在模块内完成的,Drupal 将其作为页面 HTML 的一部分打印出来。”修复如何让这个页面回显 JSON 对象会很好,但我真的需要它来中继它从外部服务器收到的 HTTP 状态。
    • 如何让页面“仅返回 JSON 对象”,这是我的问题。它返回 Drupal 页面中对象的 HTML 输出。
    • 一种方法是在页面回调函数的末尾调用drupal_json_output()。你已经试过了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 2014-09-09
    相关资源
    最近更新 更多