【发布时间】:2023-03-24 17:40:01
【问题描述】:
我正在寻找使用 javascript 从同一个站点创建一个 drupal 节点,我想知道我应该往哪个方向发展。
我知道你可以使用 services/json 来做到这一点,但肯定有更简单的方法吗?
谢谢
【问题讨论】:
我正在寻找使用 javascript 从同一个站点创建一个 drupal 节点,我想知道我应该往哪个方向发展。
我知道你可以使用 services/json 来做到这一点,但肯定有更简单的方法吗?
谢谢
【问题讨论】:
除了 AJAX 回调之外,您可能还需要在 Drupal 中有一个 menu callback,它将接受 AJAX 请求并将其转换为节点对象并使用 node_save 保存。
在最简单的形式中,它看起来像这样(注意这里没有访问检查,所以任何人都可以使用这个回调创建一个节点):
<?php
/**
* Implementation of hook_menu().
*/
function demo_menu() {
$items = array();
$items['demo/js'] = array(
'title' => 'Demo page',
'page callback' => 'demo_js_page',
'access callback' => TRUE,
'type' => MENU_CALLBACK,
);
return $items;
}
/**
* Page callback that saves a node.
*/
function demo_js_page() {
if (isset($_REQUEST['title'])) {
$node = new stdClass;
$node->type = 'blog';
$node->title = check_plain($_REQUEST['title']);
node_save($node);
drupal_set_message(t('Created node %title', array('%title' => $_REQUEST['title'])));
}
return t('Thanks for visiting');
}
显示的代码将被插入到您 Drupal 站点上 sites/all/modules/demo 等文件夹中的 demo.module 文件中。您还需要一个如下所示的 demo.info 文件:
name = Demo module
description = Demo code.
core = 6.x
【讨论】:
我首先要看的地方是这里:
然后先执行 load() 函数
http://docs.jquery.com/Ajax/load#urldatacallback
看看这是否足以满足您的需求。
从您可能需要的最简单的 Ajax 调用开始,很容易陷入更通用的 $.ajax() 的复杂性中
【讨论】: