Questions tagged «ajax»

将其用于有关JavaScript / PHP代码创建异步Web应用程序的问题。

6
如何使用AJAX验证和提交表单?
我已经使用Form API创建了一个Webform。我正在使用#AJAXfield选项将AJAX验证添加到每个字段。 是否可以在不重新加载页面的情况下使用AJAX验证并提交表单。如果验证失败,我想显示一条错误消息,如果验证成功,那么我想显示一条消息(最好在灯箱中)并重置表单字段。 到目前为止,我的代码: $form['name'] = array( '#type' => 'textfield', '#title' => t('Name'), '#default_value' => '', '#maxlength' => '128', '#required' => TRUE, '#ajax' => array( 'callback' => '_validate_name', 'wrapper' => 'name-error-icon-container', 'method' => 'html', 'effect' => 'none', 'progress' => array( 'message' => NULL, ), ), ); $form['submit'] = array( '#type' …
12 7  forms  ajax 

4
AJAX的状态消息
我正在通过标准的AJAX框架在drupal 7中进行AJAX调用。我的问题是,当状态消息由AJAX回调设置时,它只会丢失(或在页面的下一次重新加载时显示)。如何在AJAX回调完成运行后立即显示状态消息,而无需重新加载页面?是否有一个模块?

3
成功Ajax之后如何触发Drupal.attachBehaviors
我有一个模块,当单击链接时,该模块通过ajax更新节点。 该链接是一个切换,它应在第一次单击时将节点更新为值1,然后在随后的单击中将节点更新为0,以此类推。就像打开/关闭某些内容一样。 下面的代码在页面加载后的第一次点击上有效,但在随后的点击上无效。我相信每次单击后都必须调用/触发Drupal.attachBehaviors,但是我不知道该怎么做。 模块 function mymodule_menu() { $items['mypath/%/%/ajax'] = array( 'title' => 'My title', 'page callback' => 'mymodule_ajax_callback', 'page arguments' => array(1,2), 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); ... } function mymodule_ajax_callback($id, $status) { //Validation[...] //Node Update using $id as the nid and $status as the field …
10 7  ajax  javascript 

8
单击#ajax按钮时如何添加JS确认弹出窗口
我有一个已启用#ajax的基本FAPI按钮输入,并且工作正常,但是我想添加一个JS“您确定吗?” 在代码实际运行之前单击该按钮时会弹出确认对话框,我不确定该怎么做,因为无论我做什么,FAPI的JS似乎都在吞噬单击之前的内容。 我尝试添加一个内联onclick处理程序,如下所示: $form['search_filters']['channels']['channel_delete_' . $channel->nid] = array( '#type' => 'button', '#name' => 'channel_delete_' . $channel->nid, '#value' => 'Delete', '#attributes' => array( 'class' => array('confirm'), 'onclick' => "return confirm('Are you sure you want to delete that?')" ), '#button_type' => 'no-submit', '#ajax' => array( 'callback' => 'delete_channel_callback', 'wrapper' => 'channel_container_' . …
10 7  forms  ajax  javascript 

1
添加显示总费用的订单项
如何在Ubercart 2中添加一个订单项,该订单项总计所有项目的总成本,而不是售价?我试图克隆通用订单项挂钩,并为回调添加如下内容: for each($op->products as item){ $cost += $item->cost; } 我需要此订单项出现在购物车(我正在使用ajax购物车),用户完成结帐之前的订单窗格中以及商店所有者和用户收到的电子邮件中。我是否需要在uc_order之外为此代码创建一个小模块?我记不清代码与工作计算机上的代码完全相同,但是我认为我将其放在错误的位置。感谢您的指导。
10 ajax  ubercart 

2
强制Drupal将Drupal行为附加到新的ajax内容上(仅Drupal.attachBehaviors()不能正确工作)
我在drupal.org上做了很多有关该主题的文章,但不幸的是,背景不正确。 ajaxed内容未附加所需的JS和CSS(论坛) ajaxed内容未附加所需的JS和CSS(问题) 我认为这不是问题,所以我尝试使用另一种方法,也许这可能是解决方案。加载整个PHP页面并使用ajax提取某个div并不正确。所以我想,我可以让drupal仅加载内容并将其与ajax一起注入div。我用hook_preprocess_page和hook_preprocess_node进行了查询,该查询在请求的URL中查找“ ajax = 1”,然后只给出内容而不显示整个页面。现在在理论上,借助于某些tpl.php文件,我可以将drupal的输出限制为仅$ content。这就是问题所在。即使我以原始方式保留tpl.php文件,但从node-ajax.tpl.php中删除“ $ content”时,我的方法仍然有效。“以正确的方式工作”是指drupal不会重新加载整个页面,但当然不是内容。但是我无法向我自己解释,因为$ content变量中的原因,所以我认为,这只是生成内容的html。所以我的问题是,我如何将drupal的输出限制为仅包含内容,或者我是否执行了错误的步骤以使其正常工作。这是我正在使用的模块和js文件:my_ajax.module: <?php function my_ajax_init() { drupal_add_js(drupal_get_path('module', 'my_ajax') . '/my_ajax.js'); } function my_ajax_preprocess_page(&$vars, $hook) { if (isset($_GET['ajax']) && $_GET['ajax'] == 1) { $vars['template_file'] = 'page-ajax'; } } function my_ajax_preprocess_node(&$vars, $hook) { if (isset($_GET['ajax']) && $_GET['ajax'] == 1) { $vars['template_file'] = 'node-ajax'; …
10 7  ajax  javascript 

6
如何在链接窗口小部件自动完成中显示10个以上的项目?
这是有关链接模块的问题。由于使用链接模块可以同时输入外部或内部链接,因此我们强烈依赖它。 不幸的是,要从其“自动完成”字段中显示的项目数限制为10个。我们有许多节点的标题几乎相同,因此,当存在以下情况时,我们正在搜索的节点不会显示在“自动完成”字段中超过10个匹配的标题。 该限制已硬编码在中core/lib/Drupal/Core/Entity/EntityAutocompleteMatcher.php。有没有一种优雅的方法可以从自定义模块中增加这个数量呢?我需要扩展class EntityAutocompleteMatcher吗?我必须在哪里放置扩展,以及如何确保从链接小部件中执行扩展?
10 8  navigation  ajax 

5
通过ajax更新选择列表值时如何避免“检测到非法选择”?
我有四个实体引用字段,用于表单中的用户实体。主机表单是节点编辑表单。其中三个是选择列表,最后一个是内联实体表单。 通过IEF添加用户实体后,我尝试更新选择列表值: function ebep_users_feature_users_list_ajax($form, $form_state) { $ief = array_shift($form_state['inline_entity_form']); $options = array('_node' => t('- None -')); $commands = array(); foreach($ief['entities'] as $data) { $options[$data['entity']->uid] = $data['entity']->name; } foreach(_ebep_users_feature_getUserListFieldNames() as $fieldName) { $form[$fieldName]['und']['#options'] = $options; $commands[] = ajax_command_replace('#'.$fieldName.'_wrapper', drupal_render($form[$fieldName])); } return array('#type' => 'ajax', '#commands' => $commands); } 它可以工作,但是当我尝试通过IEF添加另一个用户时,我得到了: 检测到非法选择。请联系网站管理员。
10 7  ajax  forms 

2
公开的视图过滤器自动提交失去焦点
我已经设置了启用了ajax的视图。我还添加了带有自动提交功能的公开过滤器,以便在用户在文本字段中键入内容时,视图将自动更新。问题在于,当表单自动提交时,文本框会失去焦点。 我已经读到我需要将公开的表单分成一个单独的块,但是此选项不可用,因为我的观点本身就是一个块。 任何帮助将不胜感激,因为必须不断在文本框中单击才能继续键入,这确实是一个痛苦。
9 7  ajax  views 


2
在AJAX回调中调用自定义JS函数?
是否可以在AJAX回调中调用自定义JS函数? function MY_MODULE_ajax_callback() { // Define a new array to hold our AJAX commands. $ajax_commands = array(); // Create a new AJAX command that replaces the #page text with our own text. $ajax_commands[] = [CUSTOM JS FUNCTION] // Return our commandS return array('#type' => 'ajax','#commands' => $commands); }
8 7  ajax 


6
为什么此Drupal服务RESTful API无法正常工作?
我正在Drupal 7上使用“服务”模块。我想实现一项服务,该服务允许我通过AJAX提交搜索词并接收一个数组,其中包含与标题松散匹配的前5个节点(node id和title)。连接到http://example.com/api/时,我收到此消息 服务端点“搜索”已成功设置。 但是当尝试导航到类似http://example.com/api/search/Test之类的内容时,我得到了404。
8 7  nodes  ajax  services 

3
我可以使用ajax从一个输入中定位多个表单元素吗?
我正在尝试使用Ajax从一个表单输入模糊更新Drupal表单的两个不同部分。 我的输入中包含标准的ajax内容: $my_form['my_input']['#ajax'] = array( 'callback' => 'my_callback', 'wrapper' => 'my_target_div', 'event' => 'blur', ); 这工作得很好,在输入更新时换出了我的div ... 但是,由于原始输入的模糊性,我还想用其他代码更新表单中其他位置的另一个表单输入。 这有可能吗? 编辑:为清楚起见,这是我的真实示例: 内容类型“电影” 添加了字段“ primary_title” 当'primary_title'更新时,我的ajax回调检查相似的字符串并返回html。 回调中的html插入到一个空的div中。 那部分工作很棒! 我还尝试修改标准节点“ title”输入,在完成一些正则表达式以整理字符串后(从开始处删除“ The”或“ A”等),为其输入值“ primary_title”将是两个标题字段,一个具有完整标题“ primary_title”,另一个具有修剪的“ title”,这对于排序和显示记录很有用。
8 7  forms  ajax 

2
如何使用Ajax以编程方式提交Webform?
我正在为Drupal 7上的Webform提交开发Ajax实现。我找不到hook改变Webform提交按钮并在表单中添加“ #ajax”的任何好处,因此我看了一下Drupal 6模块,从外部脚本实现此功能。 因此,我决定使用自己的模块和JavaScript代码向hook_menu()在Drupal 7中定义的自定义菜单回调发送Ajax发布请求。 JavaScript部分工作正常,但在尝试以编程方式提交Webform时遇到问题。 这是我的JavaScript代码: function formSubmit(event, formId) { event.preventDefault(); var form = jQuery("#" + formId); var postData = form.serialize(); var nodeId = formId.substring(20); var msg = ''; msg += form.find('#edit-submitted-name').attr('value') ? '' : 'Please enter your name'; console.log(form.find('#edit-submitted-name').attr('value')); console.log(form.find('#edit-submitted-e-mail').attr('value')); if(msg) { alert(msg); } else { jQuery.ajax({ …
8 ajax  webforms  forms 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.