Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript googleclosure:集中式AJAX';解码器';?_Javascript_Ajax_Error Handling_Google Closure - Fatal编程技术网

Javascript googleclosure:集中式AJAX';解码器';?

Javascript googleclosure:集中式AJAX';解码器';?,javascript,ajax,error-handling,google-closure,Javascript,Ajax,Error Handling,Google Closure,首先,我必须说,我对谷歌关闭非常陌生,但我正在学习:) 好的,我正在制作一个相当大的web应用程序,我认为在一个XhrManager中管理所有AJAX请求会很好。没问题 但是,是否可能有某种默认回调,首先检查错误,必要时显示错误,然后在通过时启动“真正的”回调?我说的是一个像这样的功能。以下是他们的解释: 解码器允许您在调用成功或错误回调之前解析ajax响应。这允许您返回标有状态的数据,并做出相应的反应。这还允许您在将数据传递给回调之前以任何方式操作数据 我知道这听起来很复杂(确实如此),所以我

首先,我必须说,我对谷歌关闭非常陌生,但我正在学习:)

好的,我正在制作一个相当大的web应用程序,我认为在一个XhrManager中管理所有AJAX请求会很好。没问题

但是,是否可能有某种默认回调,首先检查错误,必要时显示错误,然后在通过时启动“真正的”回调?我说的是一个像这样的功能。以下是他们的解释:

解码器允许您在调用成功或错误回调之前解析ajax响应。这允许您返回标有状态的数据,并做出相应的反应。这还允许您在将数据传递给回调之前以任何方式操作数据

我知道这听起来很复杂(确实如此),所以我不太擅长解释这一事实也有很大帮助,但是是的

我现在想到的解决方案是创建一个存储所有“真实回调”的对象,其中“错误检查回调”将在完成检查后执行正确的回调,但我觉得这有点太老套了,我认为必须有更好的方法

由于您总是需要解码/验证AJAX数据(您现在从不信任从服务器返回的数据,是吗?),因此对于不同类型的AJAX有效负载,您总是需要使用不同的解码器/验证程序。因此,您可能应该将解码器/验证器例程作为AJAX回调本身传递——对于所有数据类型通用的验证,请在回调中调用一个公共函数

这样做的另一个好处是能够将未混合的JSON对象“转换”为“损坏的”JSON对象,这样您就不必在代码中使用带引号的属性访问

例如,假设AJAX负载由以下JSON对象组成:

{“你好”:“世界”}

如果要在代码中引用
hello
属性,并且仍然通过编译器的高级模式,则需要执行
obj[“hello”]
。但是,如果您将解码器作为回调传入,并且第一行执行以下操作:

var decoded={hello:response[“hello”]}


然后执行错误检查等,然后返回
decoded
作为AJAX响应。在您的代码中,您只需执行
obj.hello
,所有内容都将通过高级模式得到很好的优化和处理。

好吧,我真正想做的是一些基本的JSend验证(因此它返回一个JSON字符串,带有{“success”:“true”,“data”:“hello world”},因此解码应该是相同的。但我想在回调中传递解码器现在是最好的选择。在这种情况下,您可以做的是传递一个函数作为回调,首先调用一个标准解码函数。您仍然需要对其他数据进行验证和清理,因此对于每种JSON类型,您都需要调用正确的自定义验证函数。既然你正在这么做,请记住我提到的翻译——当你摆脱所有那些[“xxx”]属性访问后,你会感谢我的。