Javascript - 通过ajax获取文本并显示在链接中

时间:2014-07-17 06:22:32

标签: javascript jquery html ajax jquery-datatables

使用案例:我想在HTML LINK /锚点中用省略号(例如我的名字是......)表示一些文本,其中文本由ajax调用获取。

每当用户单击链接时,我通过进行用于获取文本的相同ajax调用来完全在模式对话框中加载文本。

以下是代码:

"aoColumns": [
    <Some code for columns>

    {"mData": "id", sWidth:"180px","mRender": function ( data, type, full )  {
    var obj = JSON.parse(JSON.stringify(full));
    JSRoutes.com.app.controllers.File.getContent(obj["fileId"]).ajax({
         data: {},
         success: function(data) {
         console.log("This is the data I want to represent in ellipsis: " + data);
    }
    });

    return "<a>" + <HOW TO PUT CONTENT (data) HERE> +"</a>";
]

问题:如何进行ajax调用以获取文件内容并同时提供锚元素的文本。因为当我们'返回'时,ajax调用可能没有完成。

我可能没有成功地清楚地解释这个问题,所以欢迎提出意见和问题以改善这个问题。

3 个答案:

答案 0 :(得分:1)

最后,我继续使用元素id在ajax函数成功回调中修改文本。

由于文件ID是唯一的,我可以提供唯一的HTML锚标识。

"aoColumns": [
    <Some code for columns>

    {"mData": "id", sWidth:"180px","mRender": function ( data, type, full )  {
        var obj = JSON.parse(JSON.stringify(full));
        JSRoutes.com.app.controllers.File.getContent(obj["fileId"]).ajax({
        data: {},
        success: function(data) {
            var linkText = "";
            var n = 70;
            if (data.length > n) {
                linkText = data.substr(0,n) + " ...";
            } else {
                linkText = data;
            }
            $( '#file_'+obj["fileId"]).text(linkText);
        }
        });

      return "<a> id=file_" + obj["fileId"] + ">" + "This will be loaded soon" +"</a>";
    }
]

答案 1 :(得分:0)

AJAX是异步的。所以如果你想先完成一些任务,只在第一个函数完成后调用第二个函数,而不是在Javascript函数中编写,而不是在jQuery中调用它。

答案 2 :(得分:0)

'ajax'中的第一个字母'a'代表 async ,表示您无法直接获得结果,但结果将在稍后提供给您的回调函数。

在你的例子中:

JSRoutes....ajax({
    success: function(data){
                 // async callback
             }
});

这个success函数将在ajax返回后执行。

因此,您应该首先返回一个空的<a>元素,然后在回调中填充内容。

示例:

var a = document.createElement('a');
JSRoutes......ajax({
    success: function(data){
                 a.textContent = data;
             }
});
return a;