Javascript-通过ajax获取文本并显示在链接中
用例:我想在HTML链接/锚中用省略号表示一些文本(例如,我的名字是…),其中文本通过ajax调用获取 每当用户单击链接时,我都会通过进行与获取文本相同的ajax调用(在模式对话框中)完全加载文本 代码如下:Javascript-通过ajax获取文本并显示在链接中,javascript,jquery,html,ajax,jquery-datatables,Javascript,Jquery,Html,Ajax,Jquery Datatables,用例:我想在HTML链接/锚中用省略号表示一些文本(例如,我的名字是…),其中文本通过ajax调用获取 每当用户单击链接时,我都会通过进行与获取文本相同的ajax调用(在模式对话框中)完全加载文本 代码如下: "aoColumns": [ <Some code for columns> {"mData": "id", sWidth:"180px","mRender": function ( data, type, full ) { var obj = JS
"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>";
]
“aoColumns”:[
{“mData”:“id”,sWidth:“180px”,“mRender”:函数(数据,类型,完整){
var obj=JSON.parse(JSON.stringify(full));
JSRoutes.com.app.controllers.File.getContent(obj[“fileId”]).ajax({
数据:{},
成功:功能(数据){
log(“这是我想用省略号“+data”表示的数据);
}
});
返回“++”;
]
问题:如何进行ajax调用以获取文件内容并同时提供锚元素的文本。因为当我们“返回”时,ajax调用可能尚未完成
我可能没有成功地解释清楚这个问题,所以欢迎评论和问题来改进这个问题。AJAX是异步的。因此,如果您想先完成某个任务,然后在第一个任务完成后才调用第二个函数,那么您必须用Javascript函数而不是CALI来编写它在jQuery中调用它。ajax'中的第一个字母“a”代表async,这意味着您无法直接获得结果,但稍后会将结果提供给回调函数 在您的示例中:
JSRoutes....ajax({
success: function(data){
// async callback
}
});
此success
函数将在ajax返回后执行
因此,您应该首先返回一个空的
元素,然后在回调中填充内容
例如:
var a = document.createElement('a');
JSRoutes......ajax({
success: function(data){
a.textContent = data;
}
});
return a;
最后,我在ajax函数成功回调中使用元素id修改文本 由于文件ID是唯一的,我可以提供唯一的HTML锚ID
"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>";
}
]
“aoColumns”:[
{“mData”:“id”,sWidth:“180px”,“mRender”:函数(数据,类型,完整){
var obj=JSON.parse(JSON.stringify(full));
JSRoutes.com.app.controllers.File.getContent(obj[“fileId”]).ajax({
数据:{},
成功:功能(数据){
var linkText=“”;
var n=70;
如果(data.length>n){
linkText=data.substr(0,n)+“…”;
}否则{
链接文本=数据;
}
$('#file_'+obj[“fileId”]).text(linkText);
}
});
返回“id=file_389;”+obj[“fileId”]+“>”+“这将很快加载”+”;
}
]
你需要在success函数中编写返回“…”
。@AminJafari:让我试试,我会更新这篇文章。谢谢!谢谢!我确实理解“A”JAX。这就是问题的原因。你能修改你的答案以包含document.createElement()吗在jquery中也附加onClick回调?我对javascript和jquery非常陌生,不知道如何做。使用var a=Create元素$('以查找所需的函数。我检查了您的答案,但它似乎不起作用。原因:该函数只能将字符串返回到dataTables render属性。是否有一种方法可以在不使用javscript createElement的情况下返回html锚定字符串?您必须提供一种稍后修改内容的方法,并在ajax回调中调用该方法。没有o如您所述直接返回结果的方法,因为这是同步方法。我最终使用唯一ID在ajax回调中修改锚文本。感谢您的帮助!