我有一个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页),而不是来自外部服务器。
我想要做的是在第2页中阅读服务器的响应并将此包传递给AJAX脚本,或者处理第2页中从服务器返回的值并传递status / value / ...回到基于此的AJAX脚本。
我尝试使用Drupal第2页来回显JSON对象,但这是在模块中完成的,Drupal将其作为页面HTML的一部分打印出来。
摘要
[第1页(ajax)] - > [第2页(Drupal模块)] - > [外部服务器]
[外部服务器(修改对象)] - > [第2页(处理对象并将其合并到一个完整的Drupal页面,并删除任何标题,从外部服务器发送的状态] - > [第1页(ajax)从第2页接收状态和数据]
答案 0 :(得分:0)
对我来说,解决方案是添加一个新页面,例如/site/module/page_name/json
,然后在该页面上具有与on(第2页)相同的逻辑,除了该页面仅返回JSON对象。无论如何,这是RESTful API的通常实现。
如果您已经拥有修改(第2页)内容的权利,那么我猜您有权将此额外路径添加到模块hook_menu()
。