2011-04-18 104 views
1

的文档JQAjaxSetup >> onError的:说:访问JavaScript函数参数

onError: anObject "A function to be called if the request fails. The function is passed three arguments: The XMLHttpRequest object, a string describing the type of error that occurred and an optional exception object, if one occurred. Possible values for the second argument (besides null) are 'timeout', 'error', 'notmodified' and 'parsererror'."

我想显示使用类似

anAjax onError: ((html jQuery id: someId) before: (MyInstanceOfWAPainter error: 'An error message'));

我该怎么做,该错误消息?可能在客户端完成这一切。

+0

我会期待一个块后onError :.由于我不了解海边,所以在谈到Javascript时可能会出错。 'anAjax的onError:((HTML jQuery的ID:someId)之前:(MyInstanceOfWAPainter错误: '错误消息'))]' – mathk 2011-04-19 06:12:11

回答

0

由于错误发生的客户端,你可能有在这样的情况下发生故障的连接,你需要生成完整的JavaScript代码会显示错误(即无需渲染回调海滨)。下面

的片段会产生有两个参数的JS功能。的功能的主体是jQuery的表达,将放在错误消息(的_error可变的内部)与ID someId HTML DOM元素之前。

anAjax 
    onError: (((html jQuery id: someId) before: (JSStream on: '_error')) 
          asFunction: #('_XMLHttpRequest' '_error')); 

就个人而言,我不会在这里使用海边的JS生成功能,如果在someId ID没有动态生成。如果它是从Seaside内部动态生成的,则第一个片段可能仍然更容易。

anAjax onError: (JSStream on: 'function(_XMLHttpRequest,_error){ 
            $(''#someId'').before(_error)}) 
+0

根据你写的内容我做了一些事情,但我不会说JS,所以我对它不太满意。我仍然喜欢smalltalk解决方案。 onError:((JSStream on:'$(“#',someId,'”)。before(_XMLHttpRequest.responseText)')asFunction:#('_ XMLHttpRequest''_error'));' – milan 2011-04-20 18:36:07

+0

嗯,你可以让错误处理函数会将一个ajax回调给Seaside,但是由于您刚刚收到错误,因此无法访问或处于错误状态。最好的解决方案是在Seaside中编写自己的异常处理程序,并使其在Seaside中呈现您想要的内容_before_将响应发送回ajax处理程序。你上面写的函数应该只在正确的位置插入生成的html。无论如何,你将无法做到没有任何(海边生成的)JS。 – 2011-04-21 06:39:16

0

根据文档,你可以做下面显示的错误:

onError:function(_XMLHttpRequest, _error) { 
alert(_error); 
} 
+0

不错的尝试,但我需要它在Smalltalk。我很确定海边可以插入原始的JavaScript,我只是没有想出如何。 – milan 2011-04-18 21:00:19

0

这一基本想法是:

jQuery的AJAX的onError:(个体经营JavaScript警告: '错误')

请参阅JQAjaxTest >> testOnError。