我试图以一种方式执行2个ajax调用,无论从第一个ajax调用接收的是第二个ajax调用的数据,在chrome上正常工作但firefox提供跨域问题但两个文件都在同一个域上。
$('.sharer').click(function(e) {
$.ajax({
type: "POST",
cache: false,
async: false,
url: "sharer.php",
data: $("#myForm").serializeArray(),
success: function(response) {
$(".the-return").html(response); // i am passing .the-return to next ajax call
} // success
}); // ajax
$(".the-return").html2canvas({
proxy: "src/proxy.php",
onrendered: function(canvas) {
var img = canvas.toDataURL("image/png");
var output = img.replace(/^data:image\/(png|jpg);base64,/, "");
var output = encodeURIComponent(img);
var Parameters = "image=" + output;
$.ajax({
type: "POST",
url: 'save2.php',
async: false,
data: Parameters,
success: function(datas) {
$(".sharer").html("<img src='img/share.png'/>");
//$(".imgs").html(datas);
}
});
}
});
});
答案 0 :(得分:0)
在你的javascript文件中创建两个函数。第二个Ajax调用应该与参数一起使用。第二个ajax调用你应该调用第一个.done()。这适用于每个浏览器。
答案 1 :(得分:0)
function firstajaxcall() {
//do all you want before sending first post
$.ajax({
url: "url",
context: document.body,
data:'data'
}).done(function(d) {
//here you place whole ajax2 call
});
}
答案 2 :(得分:-1)
将html2Canvas带入成功
$('.sharer').click(function(e) {
$.ajax({
type: "POST",
cache: false,
async: false,
url: "sharer.php",
data: $("#myForm").serializeArray(),
success: function(response) {
$(".the-return").html(response); // i am passing .the-return to next ajax call
$(".the-return").html2canvas({
proxy: "src/proxy.php",
onrendered: function(canvas) {
var img = canvas.toDataURL("image/png");
var output = img.replace(/^data:image\/(png|jpg);base64,/, "");
var output = encodeURIComponent(img);
var Parameters = "image=" + output;
$.ajax({
type: "POST",
url: 'save2.php',
async: false,
data: Parameters,
success: function(datas) {
$(".sharer").html("<img src='img/share.png'/>");
//$(".imgs").html(datas);
}
});
}
});
} // success
}); // ajax