- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我位于同一站点的不同路径上,并且我需要允许用户更改他/她在不同位置写入的节点上的字段内容。我有nodeid和字段名称以及ids等np。
我不认为这太难,但如果有教程或解释就太好了。
谢谢。
编辑:谢谢 anschauung 的提问,所以澄清一下:
这是一个 CCK 文本区域。至于为什么,有一个中心节点类型,有许多链接节点引用节点。从任何引用中心节点的节点的编辑页面,都需要能够编辑和保存中心节点的字段。这就是我的用例。
再次感谢。
非常感谢 googletorp,我真的非常感谢你的帮助。
这是我到目前为止所拥有的:
第一步:
function update_main_field_menu() {
$items = array();
$items['update_main_field/%'] = array(
'title' => 'Update Main Field',
'page callback' => 'post_to_main_node',
'page arguments' => 1,
'type' => MENU_CALLBACK
);
return $items;
}
第二步:
function post_to_main_node(){
// Sorry, I'm totally lost. What do I put here?
}
您还提到了这一点:
Either in hook_form_alter, hook_nodeapi or some other hook that is invoked when the node form is generated. You should investigate which is best in your situation.
如何生成节点表单?
第三步:
function modulename_form_mainct???_node_form_alter (&$form, &$form_state) {
// I'm not sure about which form I'm doing node form alter on. If I do it to the mainct, wouldn't that alter the regular edit page the user is viewing? I only want to load the js for the ajax submission. Is there a update_main_field node form?
drupal_add_js(drupal_get_path('module', 'modulename') ."/updateField.js");
}
另外,步骤 2 中的函数和步骤 3 中获取节点形式之间有什么关系?
第 4 步:我想我大部分都明白了,尽管由于其他原因我还无法测试它。 :)
我真的很想学习如何在 drupal 中做到这一点,但是如果你能稍微提高你的语言的虚拟级别,那就太好了。 :D 再次非常感谢您。
<小时/>我昨天实际上尝试添加访问参数,但由于某种原因它不起作用。 :( 但现在确实如此!是的,你有魔法。
现在,当我像这样触发帖子时:
Drupal.behaviors.ajax_update_field = function (context) {
$("#button").click(function(){
var url = $("#edit-field-reference-0-nid-nid").val().replace(/.*?\[nid:(\d+)?]/ig, "$1");
url = "/update_main_field/"+url;
// The data is just some silly test thing
$.post(url, {data: $("#edit-field-reference-0-nid-nid-wrapper label").text()}, function(value) {
// Here you can write your js to handle a response to the user,
// or if something went wrong an error message.
// value = response data from drupal
alert(value);
});
});
}
我看到该网址的帖子包含正确的数据。这很好。但没有回应。警报为空。
还有一个新的空白...已经创建了一些东西。其中没有任何内容,但在过滤节点时我可以在 View 中看到它。它没有标题、任何字段等。只有发布日期。
我想要更新的节点没有更新。
所以这让我认为第二步可能有点不正确。我有几个问题。
function post_to_main_node(){
// Is this sufficient to load the node? nid doesn't have to be set as an arg for the function?
$node = node_load($_POST['nid']);
// Is the field set like this? 'field_library' is the 'machine name' of the field. This is what's needed right?
$node->field_library = $_POST['data'];
node_save($node);
}
再次非常感谢您。
最佳答案
这可以很容易地完成,但需要几个步骤。
更新了代码以展示我将如何执行此操作。这段代码几乎可以复制到您的 drupal 项目中,但我还没有对其进行过实际测试,因此这里可能存在拼写错误或那里存在错误。
设置一个您可以发布到的网址 hook_menu() 。您需要使用 CALLBACK 类型。您需要记住的是向菜单项添加某种访问控制。如果您不这样做,则任何人都无法访问它,甚至用户 1 也无法访问它,因为没有进行访问控制。在这种情况下,您应该使用访问参数,并输入用户需要拥有的权限的名称。您可以使用不同模块中已存在的模块,也可以使用 hook_perm 创建自己的模块。 。您需要确保您的用户拥有正确的权限才能使用它。这通常是通过 Drupal AI 完成的。
function modulename_menu() {
$items = array();
$items['update_main_field'] = array(
'page callback' => 'call_back',
'type' => MENU_CALLBACK,
'access arguments' => array('name of perm'),
);
return $items;
创建您指定的回调函数,这是当有人访问该网址时将运行的函数。
一个简单的版本看起来像这样。在保存节点之前,您需要验证数据并执行类似的操作。您可能还想进行权限检查。
function call_back() {
$result = array();
// Here we check the date get the node, update the cck field and save it.
$node = isset($_POST['nid']) ? node_load($_POST['nid']) : FALSE;
// $node will be false if nid wasn't set or nid was invalid.
if (!$node || !isset($_POST['text']); {
$result['status'] = 'error';
$result['message'] = t('error message');
}
// Check if the loaded node have the correct type so it will have the field we want.
else if ($node->type != 'node_type') {
$result['status'] = 'error';
$result['message'] = t('error message');
}
else {
$node->field = $_POST['text'];
node_save($node);
$result['status'] = 'success';
$result['message'] = t('success message');
}
return drupal_json($result);
}
添加js文件,可以通过drupal_add_js()来完成,您可能想查看 drupal_get_path()为您的 js 文件创建正确的路径。您可以通过多种不同的方式添加 js 文件。在 hook_form_alter、hook_nodeapi 或生成节点表单时调用的其他 Hook 中。您应该调查哪一个最适合您的情况。如果你使用 hook_form_alter ,它看起来像这样:
modulename_form_alter(&$form, &$form_state, $form_id){
// Add js to the desired node form.
if ($form_id == 'content_type_name_node_form') {
drupal_add_js(drupal_get_path('module', 'modulename') . '/script.js');
}
}
使用 jQuery 执行 javascript 操作,如果您的 fx 有一个按钮和一个文本字段,这可能看起来像这样:
$("#button_id#").click(function(){
var nid = $("#edit-field-reference-0-nid-nid").val().replace(/.*?\[nid:(\d+)?]/ig, "$1");
var text = $("#edit-field-reference-0-nid-nid-wrapper label").text();
$.post("/update_main_field", {"nid": nid, "text", text}, function(data) {
// This is basically how jQuery converts response data to json
var json = eval("(" + data + ")");
if (json['status'] == "error") {
// Handle error cases.
}
else if (json['status'] == "success") {
// Handle the success case.
}
});
});
关于jquery - Drupal 6/jQuery Ajax 更新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1670858/
有人有 Comet 应用程序 .net 的任何样本吗? 我需要一个示例如何在服务器中保持客户端的连接? 最佳答案 这里也有一些不错的: http://www.frozenmountain.com/we
我想知道是否有 Yii2 专家可以帮助我了解如何最好地使用 ajax 表单与 Yii ajax 验证相结合。我想我可以在不带您阅读我所有代码的情况下解释这个问题。 我正在处理一个促销代码输入表单,用户
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度的了解。包括尝试的解决方案、为什么它们不起作用以及预期结果
f:ajax 和 a4j:ajax 标记之间有什么显着差异吗? 我知道 Richfaces 4 中的 a4j:ajax 基于 native f:ajax JSF2 标记,添加了一些 f:ajax 中未
我已经尝试过这样但无法获取数组列表。它返回“null” var data=[]; data[0] = '1'; data[1] = '2'; $.ajax({
在教程中可以看到 jQuery.ajax 和 $.ajax 喜欢这里 http://www.thekludge.com/form-auto-save-with-jquery-serialize/ jQ
过度使用 AJAX 会影响性能吗?在大型 Web 应用程序的上下文中,您如何处理 AJAX 请求以控制异步请求? 最佳答案 过度使用任何东西都会降低性能;在必要时使用 AJAX 将提高性能,特别是如果
似乎我无法使用 Ext.Ajax.request 进行跨域 ajax 调用。看起来 ScriptTag: True 没有任何效果。 这是我的代码: {
我正在使用 Bottle 微框架(但我怀疑我的问题来自它) 首先,如果我定义了一个从/test_redirect 到/x 的简单重定向,它会起作用。所以 Bottle redirect() 在简单的情
任何人都可以指出各种 AJAX 库的统一比较吗?我已经阅读了大约十几种不同的书,我即将开始一个项目,但我对自己是否已经探索了可能性的空间没有信心。 请注意,我不是在要求“我认为 XXX 很棒”——我正
似乎使用 AJAX 的站点和应用程序正在迅速增长。使用 AJAX 的主要原因之一可能是增强用户体验。我担心的是,仅仅因为项目可以使用 AJAX,并不意味着它应该。 可能是为了 UX,AJAX 向站点/
假设我有一个可以通过 Javascript 自定义的“报告”页面。假设我有可以更改的 start_date、end_date 和类型(“简单”或“完整”)。现在 我希望地址栏始终包含当前(自定义) V
我一直在阅读 Ajax 并且希望从 stackoverflow 社区看到我是否正确理解所有内容。 因此,正常的客户端服务器交互是用户在 url 中拉出 Web 浏览器类型,并将 HTTP 请求发送到服
这可能有点牵强,但让我们假设我们需要它以这种方式工作: 我在服务器的 web 根目录中有一个 index.html 文件。该文件中的 javascript 需要向/secure/ajax.php 发出
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 去年关闭。 Improve this
我希望ajax post成功进入主页。由于某种原因,我一直做错事。知道我应该做什么来解决这个问题吗? window.APP_ROOT_URL = ""; Ajax $.ajax({ url: '#{a
我在 2 个不同的函数中有 2 个 ajax 调用。我想用.click来调用这2个函数。 func1 将数据插入数据库,然后 func2 检索数据,所以我的问题是如何等到 func1 完全完成然后只执
我试图在单击按钮后禁用该按钮。我尝试过: $("#ajaxStart").click(function() { $("#ajaxStart").attr("disabled", true);
我试图在每个 Ajax 请求上显示加载动画/微调器 我的 application.js $(document).on("turbolinks:load", function() { window.
我正在显示使用jQplot监视数据的图形。 为了刷新保存该图的div,我每5秒调用一次ajax调用(请参见下面的JavaScript摘录)。 在服务器上,PHP脚本从数据库中检索数据。 成功后,将在5
我是一名优秀的程序员,十分优秀!