【问题标题】:json response callback load store extjsjson响应回调加载存储extjs
【发布时间】:2013-04-16 20:02:21
【问题描述】:

我有一个从 PHP 脚本加载数据的 JSON 存储。此脚本调用 Web 服务,有时它会出现一些错误,我需要捕获它们并在我的应用程序中显示它们。 在我的脚本中,当我遇到错误时会打印这一行:

echo '{"success": "false", "error": "'.$res->state->Description.'"}';

在我的应用中,我有这段代码来加载商店

targheStore.load({
                            params: { targa: searchForm.getValues().targa },
                            callback: function(records, operation, success) {
                                Ext.getBody().dom.style.cursor = "default";
                                if(!success){
                                    $("#message2").slideDown('fast');
                                    setTimeout(function() {
                                        $("#message2").slideUp('medium')
                                    }, 2700);
                                }
                            }

                        });

jQuery 代码是从顶部显示“未找到记录”消息,但我想显示从 json 收到的错误消息。

【问题讨论】:

    标签: json extjs callback store


    【解决方案1】:

    操作参数内部是一个请求和响应对象。使用响应对象,就像任何 Ajax 响应都应该允许您按照自己喜欢的方式处理消息一样。

    我建议声明一个全局可用的处理程序来处理操作以查找 JSON.parse(response.responseText).hasOwnProperty("error") 并以这种方式执行您的自定义操作。

    如果您不使用 JSONP 进行通信,则可以将消息填充到从 HTTP 错误代码 (400+) 返回的原始文本中,并且 ajax 中的 {error:} 处理程序将是路由错误的最佳方式。

    【讨论】:

    • 你不应该使用“error”属性,而应该使用“msg”属性。 ExtJS 使用 error 属性记录验证错误。
    • 我建议他在 responseText 内部查找错误属性——因为这是他在 PHP 发射器中定义的。不是根响应本身。
    • 我知道,他仍然应该同时更改 js 部分和 php 部分以使用“msg”属性。然后他会遵循 Ext 约定。创建和更新请求默认将验证错误列表放在“error”属性中。
    • @RolandSchütz 我已经更新了我的回复,以包含您的观点,并提供足够的一般细节以供实施。将不胜感激投票是/否。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多