我是webdev的新手,我正在尝试构建一个只需点击按钮hash.sort! { |a, b| b[:distance] <=> a[:distance] }
即可获得新报价的网络应用。
这是我的js代码:
project_dependents
任何帮助都会受到赞赏。
以下是感兴趣的人的代码: https://codepen.io/tadm123/pen/YNvdyr
答案 0 :(得分:1)
您的代码100%正确。恰好,浏览器正在缓存您正在访问的URL的结果。我注意到Codepen正在缓存结果,当我用计算机上的文件测试时,我的浏览器也在缓存它。因此,在第一次点击该URL之后,它会想到“哦,我已经去过这个URL了,我已经知道了结果是什么。所以为了节省时间,我会给它一样的以前的数据。“
要解决这个问题(这可能被视为hacky?),请将当前时间添加到URL的末尾(因为时间总是不同的),如下所示:
function get_new(){
var currentDate = new Date().getTime(); // create new date
$.getJSON("http://quotesondesign.com/wp-json/posts?filter[orderby]=rand&date=" + currentDate, function(a) { // add it to end of URL
var quote = a[0].content.slice(3,-6);
var author = '- ' + a[0].title;
var my_quote = $('<i class="fa fa-quote-left"></i> ' + quote + ' <i class="fa fa-quote-right"></i>');
$('.quoteBody').html(my_quote);
$('.quoteAuthor').html(author);
// tweet the quote
$("#tweet").click(function(){
$(this).attr('href', 'https://twitter.com/intent/tweet?text='+ '"'+ quote + '" - ' + author).attr("target","_blank");
});
});
}
有时候结果会慢慢来,但我认为这是因为您要求报价的服务器的速度。另一个挑战可能是在从服务器获取报价时显示加载程序。
答案 1 :(得分:1)
正如其他人所指出的那样,它只是codepen上的缓存问题。
将此行添加到您的代码中以设置缓存false:
private static void manipulateWithCopy(PdfReader reader,String result)
throws IOException, DocumentException {
int n = reader.getNumberOfPages();
Document document = new Document();
PdfCopy copy = new PdfCopy(document, new FileOutputStream(result));
document.open();
for (int i = 0; i < n;) {
copy.addPage(copy.getImportedPage(reader, ++i));
}
document.close();
}
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try{
String path= "path/of/the/file/in/the/smb/storage";
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null, "username", "password");//storing authentication details
SmbFile sFile = new SmbFile(path, auth);
FileOutputStream fileOutputStream;
InputStream fileInputStream;
String destFilename = "path/to/the/file";
fileOutputStream = new FileOutputStream(destFilename);
fileInputStream = sFile.getInputStream();
byte[] buf;
int len;
buf = new byte[16 * 1024 * 1024];
while ((len = fileInputStream.read(buf)) > 0) {
fileOutputStream.write(buf, 0, len);
}
InputStream inputPdf = new FileInputStream(destFilename);
PdfReader reader= new PdfReader(inputPdf);
reader.selectPages(stpg+"-"+endpg);
manipulateWithCopy(reader,destFilename);
reader.close();
}
catch(Exception e){
System.out.println(e);
}
}
在现场环境中小心使用它,您不希望使用cache:false来影响所有ajax请求。因此,我建议您使用普通的jQuery ajax调用,并将属性缓存专门设置为false,仅限于此函数:
$.ajaxSetup({ cache: false });
答案 2 :(得分:0)
将缓存false设置在您的网址中。这是因为您一次又一次地获得相同的数据
https://quotesondesign.com/wp-json/posts?filter[orderby]=rand&filter[posts_per_page]=1&cache=false&callback
答案 3 :(得分:0)
关闭...要使控制台关闭,$.ajaxSetup({ cache: false });
无法正常工作。但是,随机化URL确实:
$.getJSON("https://quotesondesign.com/wp-json/posts?filter[orderby]=rand&filter[posts_per_page]=1&callback=&cache="+Math.random(), function(a) {