1

情况

我有一个使用标签的页面。一些选项卡使用 AJAX 功能来加载它们的内容。但是,我从服务器返回的响应并不严格是要显示的 HTML。

为了实例化选项卡,我使用以下内容,如果可能的话,我希望将处理保留在下面的代码中,因为这只是一个非常大的前端的一部分,它会自动创建一组钩子:

objElement.tabs({
    heightStyle : "auto",
    show : {
        effect : "fade",
        duration : 400
    },
    hide : {
        effect : "fade",
        duration : 400
    },
    load: function( event, ui) {
        /* ### Processing here ###
        * Would like to be able to pass the response to a "postrequestprocedure"
        * function
        */
    });
}

jQuery 选项卡将数据直接扔到选项卡中。我知道我可以使用 load 事件进行一些后期处理。这是服务器响应的示例,它是一个 JSON 对象,它确实显示如下,带有换行符标签。为了便于阅读,我将它们排除在外。

{
    "content" : 
        "<span><ul><li>list item</li></ul><p>Some example HTML</p></span>",
    "script":[
        "a.script",
        "b.script"
    ],
    "title":
        "User Login",
    "css": {
        "dev.min":"screen"
    }
}

问题

  • ajax 属性仅通过 $tabs({load: function(event,ui)}); 部分公开。界面; 我无法通过这种方式访问​​相关操作/参数。

  • 当需要收集响应时;如果我使用 html(),它将返回一些 HTML 的结束标记,而不是响应的一部分。准确地说,我已经在我的回复中考虑了 HTML,而这些额外的标签不是:

  • 如果我使用 text() 来收集内容,任何打开的 HTML 标记都会被删除

问题

为了将其解析为 JSON 对象,我如何才能获得响应而不会出现“摆弄”。

可能性

Zahid 强调了我可以覆盖关于选项卡的默认 ajax 行为。如果这意味着,我很乐意这样做,我可以自动检测应用这种覆盖的条件

亲切的问候

4

1 回答 1

1

对于与我有相同问题的任何人,我已经弄清楚了,而无需执行任何覆盖或类似操作。

很简单,由于 API 发生了变化,未记录的获取响应的方式如下:

$().tabs({
    beforeLoad: function(event, ui) {
        ui.jqXHR.done(function(response) {
            console.log(response);
        });
    }
});
于 2013-07-18T04:05:32.460 回答