Javascript 不进行AJAX/JS调用
我目前正在使用JS和Ajax请求来编辑一些HTML标记,具体取决于某些控制器方法的结果。在我想要生成PDF之前,这些都可以正常工作。我一直在做一些研究,并使用javascript\u delay和窗口状态找到了一些“解决方案”,但没有成功 按照wkhtmltopdf的指导,我正在使用wicked\u pdf\u javascript\u include\u标记来加载JS文件,并且正在编写和保存该文件,但是我不知道是否正在执行javascript,因为在.JS文件的AJAX部分生成了“可视”部分,而该部分在pdf中没有显示 控制器正在返回一个完整的HTML,我希望在HTML容器中显示该HTML:Javascript 不进行AJAX/JS调用,javascript,ruby-on-rails,ajax,wicked-pdf,Javascript,Ruby On Rails,Ajax,Wicked Pdf,我目前正在使用JS和Ajax请求来编辑一些HTML标记,具体取决于某些控制器方法的结果。在我想要生成PDF之前,这些都可以正常工作。我一直在做一些研究,并使用javascript\u delay和窗口状态找到了一些“解决方案”,但没有成功 按照wkhtmltopdf的指导,我正在使用wicked\u pdf\u javascript\u include\u标记来加载JS文件,并且正在编写和保存该文件,但是我不知道是否正在执行javascript,因为在.JS文件的AJAX部分生成了“可视”部分,
$.ajax({
url: "/monitor/device/"+widget.property.device_sensor,
type: 'GET',
dataType: 'html'
}).done(function (datos) {
$container.html(datos);
}).always(function () {
redBorder.widgets.util.reloadDone($container.parents('.widget'));
});
这是在Rails中使用GEMwkhtmltopdf
我如何知道JS正在执行,如果它正在执行,问题是AJAX调用如何解决?在使用
wicked pdf
进行渲染时,页面会保存到磁盘上的临时文件中,并通过文件://
协议打开。结果是页面对您的服务器地址一无所知,即使它知道了,它也会有不同的来源,这在默认情况下会阻止ajax调用(需要设置CORS来绕过它)
对于PDF,最好不要使用ajax调用,因为显然不会有用户交互,而是在视图中呈现所有必要的数据。尝试以下方法:
var httpRequest;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
try {
httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
if (!httpRequest) {
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
httpRequest.open('GET', url);
httpRequest.withCredentials = true;
httpRequest.responseType = 'text';
httpRequest.onreadystatechange = function(){
if (httpRequest.readyState === 4) {
/do stuff
}
};
httpRequest.send();
这将用纯javascript替换ajax调用。希望这能有所帮助,Pedro。谢谢您的回复Frank,我已经尝试过了,但是没有成功,因为控制器和XMLHttpRequest之间仍然存在一些通信错误。这显然是用cookie解决的,但我们没有收到控制器返回的信息。有关更多信息,请参见此: