如何使用drupal.ajax()检查追随代码块的Ajax请求的成功 -- ajax 领域 和 javascript 领域 drupal 相关 的问题

How to check the success of AJAX request for following chunk of code using Drupal.ajax()


3
vote

问题

中文

使用drupal.ajax()函数的以下代码和ajax请求。我想要的是,在请求完成后,有一些回调,基本上是通常的jQuery ajax请求的"成功" 参数。添加 success = function(request, status) 参数无论如何都没有帮助,或者也许我做错了。那么我如何将成功回调到这个请求?

  var ajaxSettings = {     url: eventEditFormUrl + '/nojs',     selector: popContClass + '>div.content',     wrapper: popContClass + '>div.content',     event: 'add_event',     method: 'html',     progress: {         type: 'none',     },     speed: 'fast',     effect: 'fade', }; var req = new Drupal.ajax(null, popContClass, ajaxSettings); $(popContClass).trigger('add_event');   
英文原文

The following code makes and AJAX request using Drupal.ajax() function. What I want is to have some kind of callback that will be executed once the request completed, basically the 'success' parameter of usual jQuery AJAX request. Adding success = function(request, status) parameter doesn't help either, or maybe I did something wrong ther. So how could I get a success callback to this request?

var ajaxSettings = {     url: eventEditFormUrl + '/nojs',     selector: popContClass + '>div.content',     wrapper: popContClass + '>div.content',     event: 'add_event',     method: 'html',     progress: {         type: 'none',     },     speed: 'fast',     effect: 'fade', }; var req = new Drupal.ajax(null, popContClass, ajaxSettings); $(popContClass).trigger('add_event'); 
     

回答列表

1
 
vote

您可以提供有关成功功能对您不适合的原因还是您使用的代码?这应该与jQuery Ajax中的Ajax设置完全相同,因为它只是一个泛曲,所以你的代码将在你的js中的东西:

  $.ajax({     url: eventEditFormUrl + '/nojs',     selector: popContClass + '>div.content',     wrapper: popContClass + '>div.content',     event: 'add_event',     method: 'html',     progress: {         type: 'none',     },     speed: 'fast',     effect: 'fade',     success: function(){        $(this).html("woot.");     } });   
 

Could you provide more information on why the success function didn't work for you or what code you were using for it? This should work exactly like ajax settings in jquery Ajax since its just a passthrough, so your code would be something like this in your js:

$.ajax({     url: eventEditFormUrl + '/nojs',     selector: popContClass + '>div.content',     wrapper: popContClass + '>div.content',     event: 'add_event',     method: 'html',     progress: {         type: 'none',     },     speed: 'fast',     effect: 'fade',     success: function(){        $(this).html("woot.");     } }); 
 
 
0
 
vote

要调用通过呼叫javascript命令ajax framework命令,drupal使用 success 回调(请参阅 misc / ajax.js 在7.x分支的头上)。因此,如果您在 Drupal.ajax 的设置中指定了自己的 success 回调,则不会执行Drupal Ajax Framwork命令。

为了在 success中执行自定义代码回调并留下drupal ajax framwork工作,您需要覆盖默认的drupal ajax框架的 success 回调执行您的代码和drupal ajax框架的框架,但您需要先创建drupal.ajax对象。

示例:

  var ajaxSettings = {     // your settings here };  // Initiate Drupal.ajax object var req = new Drupal.ajax(null, element, ajaxSettings);  // Override success callback req.options.success = function (response, status) {   // Place your code here   // your_code_here();    // Proceed with default "success" callback code from Drupal Ajax framework    // Sanity check for browser support (object expected).   // When using iFrame uploads, responses must be returned as a string.   if (typeof response == 'string') {     response = $.parseJSON(response);   }   return req.success(response, status); }  // Trigger event here   

另一个(和技术上更好)选项是直接使用 998887667 方法直接调用"成功" 回调代码。这避免了代码重复。

  var ajaxSettings = {     // your settings here };  // Initiate Drupal.ajax object var req = new Drupal.ajax(null, element, ajaxSettings);  // Override success callback req.options.success = function (response, status) {   // Place your code here   // your_code_here();    // Call original method with main functionality   Drupal.ajax.prototype.success.call(req, response, status); }  // Trigger event here   

上次方法的信用转到 Asghar 在相关主题在 drupal.org < / a>。

 

In order to call javascript commands that are invoked via Ajax framework commands, Drupal uses a success callback (see the code in misc/ajax.js on HEAD of 7.x branch). Therefore if you specify your own success callback in settings for Drupal.ajax, no Drupal Ajax framwork commands will be executed.

In order to execute a custom code in success callback and leave Drupal Ajax framwork workings intact, you need to override the default Drupal Ajax framework's success callback with the one that executes both your code and that of Drupal Ajax framework, but you need to create Drupal.ajax object first.

Example:

var ajaxSettings = {     // your settings here };  // Initiate Drupal.ajax object var req = new Drupal.ajax(null, element, ajaxSettings);  // Override success callback req.options.success = function (response, status) {   // Place your code here   // your_code_here();    // Proceed with default "success" callback code from Drupal Ajax framework    // Sanity check for browser support (object expected).   // When using iFrame uploads, responses must be returned as a string.   if (typeof response == 'string') {     response = $.parseJSON(response);   }   return req.success(response, status); }  // Trigger event here 

Another (and technically better) option is to call "success" callback code directly using call() method. This avoids code repetition.

var ajaxSettings = {     // your settings here };  // Initiate Drupal.ajax object var req = new Drupal.ajax(null, element, ajaxSettings);  // Override success callback req.options.success = function (response, status) {   // Place your code here   // your_code_here();    // Call original method with main functionality   Drupal.ajax.prototype.success.call(req, response, status); }  // Trigger event here 

Credit for the last approach goes to asghar as he described it in related topic on drupal.org.

 
 

相关问题

6  在Ajax回调中返回#disabled  ( Returning disabled in ajax callback ) 
这是从示例模块(http://drupal.org/project/examples)取出。更具体地在"生成文本字段" Ajax部分中。表单尝试通过呈现2个复选框并基于哪个复选框来演示AJAX调用。 这是ajax回调。我们有一个带有key'first_name'的文本字段。 <div class="views-e...

7  自动完成文本字段小部件?  ( Autocomplete textfield widget ) 
任何人都知道Textfields的Drupal 7自动完成小部件吗?我尝试了自动完成小部件,但"允许值列表的自动完成" 窗口小部件似乎在Drupal 7中似乎存在 - 只有其他两个小部件显示出来。我的目标是将纯文本存储纯文本,但从用户配置文件字段中自动完成。谢谢! ...

3  自定义窗口小部件字段仅保存第一个字母,在编辑时消失  ( Custom widget field only saves first letter disappears on edit ) 
我正在尝试为drupal 7创建一个自定义模块,它为文本字段提供两个窗口小部件。它们使用#autocomplete_path从数据库表中自动完成。自动完成工作正常,选择匹配项时,它是对字段的值,但是只保存节点时,显示了该字段中的第一个字母。然后在编辑节点时,该字段以编辑形式出现空白。 这是我的模块代码: <?ph...

1  如何添加每分钟在块中调用JavaScript的代码?  ( How can i add code that will call the javascript within a block every minute ) 
我有一个块,其中包含javascript,它调用向此块发送广告的网站(见下文:注意:我将域名更改为adserveringwebsite)。 如何添加每分钟调用以下JavaScript的代码,以便每分钟显示不同的广告,而不是在页面加载时只需一个广告? <script src="http://www.adserver...

3  将JS连接到Tablyelect复选框?  ( Attach js to tableselect checkboxes ) 
使用drupal 7 tableselect form字段,有没有办法将JavaScript事件附加到复选框? 我正在尝试构建一个自定义定价表,允许您添加不同的选项,该选项修改显示的总计。检查选项时,我需要通过AJAX传递值并返回新的总价格。不确定如何附加事件。 ...

4  使用另一个Ajax调用加载启用Ajax提交的WebForm  ( Load an ajax submission enabled webform using another ajax call ) 
我正在使用javascript / ajax来调用自定义模块中定义的路径,该路径加载显示现有节点内容以进行显示。即你是: /custom/path ,它会使用参数的Ajax请求/自定义/内容加载页面的内容(放在#主内容中)。内容可以是页面,视频或其他自定义内容类型。 页面上的自定义导航元素会导致使用不同参数...

7  Drupal Ajax只开枪  ( Drupal ajax fires only once ) 
在Drupal 7中,我有一个表格,我想做以下内容: 在简单的两个列表中显示一个选项列表 从下拉列表中选择一个操作,将AJAX触发,并替换表中的选项 我有编写的代码,drupal在第一次选择一个选择时才会在Ajax上发布值。这是否只是在"项目" 类型上是否有效?注意,页面上还有其他表单,但表单ID是唯一的表单字段...

0  如何在Drupal7中使用形式的Ajax显示选择查询结果  ( How to display select query results using ajax in a form in drupal7 ) 
请给我一些解决方案。我想在Drupal 7中使用Ajax显示数据库选择查询结果以Ajax为单位。 ...

0  菜单调用回Ajax不起作用  ( Menu call back for ajax not working ) 
下面是我的模块中的代码。我想做一个ajax发布到path test_call。但是当我在做的时候得到一个404错误消息。 <?php function callback_permission() { return array( 'access simple page' => array( ...

0  在AJAX提交后,删除Ajax提交和显示状态消息的TableDrag状态  ( Remove tabledrag statuses on ajax submit and display status message after ajax s ) 
我在我的自定义表单之一添加了 drupal_add_tabledrag() ,它使用户能够拖动重新排序元素的权重,然后通过ajax将通过ajax提交给保存的回调函数重量。 这一切都是工作,并且重量保存,但在保存之后,指示权重的星号已更改,并且在表单提交之前不会保存此表中的消息"在此表中的更改" 不会走开。 让拖拉...

4  用ajax重新加载表单值  ( How reload form values with ajax ) 
所以我试图做一些真正简单的事情,但没有设法知道如何用来自drupal 7的ajax api形式做它。我有一个带有选择输入类型的管理GUI,我设置了#ajax属性with the callback but I don't want to replace anything just need to reload/refr...

9  如何创建进度栏?  ( How do i create a progress bar ) 
我需要使用drupal 7来实现进度条7.这是我实际使用的代码。 $form[$name][$name.'_enc'] = array( '#type' => 'submit', '#value' => t($name.' Enable'), // '#submit' => array('submit...

4  如何在添加或从无限值字段中删除的项目后运行JavaScript代码?  ( How can i run javascript code after an item added or removed from an unlimited v ) 
我正在尝试在drupal 7中将一些js功能添加到无限的值字段中,它适用于页面加载,但在添加或删除项目后消失,我没有找到通知表所在的代码的方法重新加载,是时候重新初始化这些函数的时间。我该怎么办? ...

0  “再次”AJAX呼叫多个节点在一页上添加表单  ( One more ajax call for multiple node add forms on one page ) 
我想要一个页面,初始节点添加表格(小尺寸),标题行和身体textarea 3x20尺寸; 和一个按钮"再用" AJAX呼叫,以显示另一个表单加上另一个按钮等。 当然,提交按钮始终在底部。 所以问题是...哪个模块? :)我几乎无法找到搜索条款! 更新:我想添加,这个任务似乎经常使用和模块化,所以我认为它会有一个模...

0  在成功Ajax提交后,如何清除已渲染“Drupal消息”? [复制]  ( How to clear already rendered drupal messages after successful ajax submit ) 
这个问题已经在这里有一个答案: 关闭 9年前。 可能的重复: 删除tabledrag状态ajax提交 后,ajax提交和显示状态消息 我有一种自定义表单,将节点的"权重" 保存到自定义表中。表...

6  从JavaScript调用Drupal PHP功能?  ( Call drupal php function from javascript ) 
我正在尝试通过替换新文章的内容来使用AJAX来获取文章的内容并显示它。为此,我想将异步jQuery调用到只输出物品的主体的PHP页面。但是,此PHP功能需要访问Drupal PHP功能,以便正常运行。我如何或者如何创建一个可以在Drupal安装中访问这些函数的PHP文件? ...

1  获得自动完成工作  ( Getting autocomplete working ) 
我真诚地做了,什么 和这个教程告诉我,但不知何故,我的自动完成文本仍然冒着一个ajax错误。但要更具体:Ajax错误给出了200个HTTP响应和状态确定,但 no 答案文本。 我的设置是: $form['field_new_verein_location_'.$i] = array( '#type' =>...

1  通过ajax加载JS文件翻译的问题  ( Problem with loading translation of js file via ajax ) 
我有一个ajax调用,它加载一些信息和js文件,与drupal.t('close历史') 该字符串,虽然在数据库中正确加载,但在加载到ajax时不会被翻译。 转换通过ajax加载的js文件的问题? 任何想法都很欣赏! ...

3  使用Ajax在查看视图中提交后,如何重新加载jQuery脚本?  ( How can i reload jquery scripts after form submit in views using ajax ) 
我有一个使用b.f.f启用的ajax的视图。过滤某些内容。提交这些过滤器后,jQuery脚本停止工作。 请帮我找到答案如何在使用ajax使用提交按钮后重新加载任何这些脚本? 我试图用它做这样的事情,并将其作为一个简单的脚本作为一个简单的脚本,在template.php中使用drupal_add_js: Drupa...

4  Ajax回调中的Drupal_add_js  ( Drupal add js within ajax callback ) 
如何使用带有一些ajax回调的drupal_add_js将一些数据添加到rupal设置对象? 我的页面上有一个Ajaxified标志链接,并在我的模块中实现了Hook_Flag,如何在此挂钩中添加JS? function hook_flag($action, $flag, $content_id, $accoun...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.