在弹出函数中运行AJAX

Run AJAX inside a popup function?

本文关键字:运行 AJAX 函数      更新时间:2023-09-26

我正在尝试在弹出函数中运行ajax。

基本上,我有一个非常简单的JavaScript函数,我需要在里面运行一个ajax调用

为了解释这一点,这是我的简单弹出功能:

if(window.opener && !window.opener.closed) {
}
window.close(); // Closing the popup

这就是我在里面运行ajax的方式:

if(window.opener && !window.opener.closed) {
    var  img = $('#img').val();
    alert(img);
    $.ajax({
        url:"folder/page.php",
        data:{img:img},
        type:"POST",
        contentType:"application/x-www-form-urlencoded",
        success:function(result)
        {
        }
    });
}
window.close(); // Closing the popup

我就是这样称呼它的:

<a href="#" onClick="window.open('folder/page.php', 'Popup', 'width=640,height=480');">Some Text/a>

当我运行代码时,弹出窗口会正确打开,但根本没有执行ajax。

我在我的page.php中有这个,以确保发送/发布ajax:

$img = $_POST['img'];
$file = fopen("test.txt","w");
echo fwrite($file,$img);
fclose($file);

但是test.txt文件中没有插入任何内容,并且始终为空。

有人能就这个问题提出建议吗?

编辑:

这是我的隐藏输入字段(#img):

<input type="hidden" id="img" value="data:image/jpeg;base64,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">

您需要在ajax成功函数中添加window.clode()。此外,我还稍微更改了您的ajax调用,假设您使用的是1.8 之后的版本

Deprecation Notice: The jqXHR.success(), jqXHR.error(), and jqXHR.complete() callbacks are deprecated as of jQuery 1.8. To prepare your code for their eventual removal, use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead.

if(window.opener && !window.opener.closed) {

var img = window.opener.$("#img").val(); 
    var request = $.ajax({
        url:"folder/page.php",
        data:{img:img},
        type:"POST",
        beforeSend:function(){ console.log(img); }
});
request.done(function( result ) {
 // your result manipulation function
 ....
 window.close(); // close pop-up
});
request.fail(function( jqXHR, textStatus ) {
  alert( "Request failed: " + textStatus ); 
window.close(); // close pop-up
});
}

试试这个:

 if(window.opener && !window.opener.closed) {
    var  img = $('#img').val();
    alert(img);
    $.ajax({
        url:"folder/page.php",
        data:$.param({img:img}),
        type:"POST",
        contentType:"application/x-www-form-urlencoded",
        success:function(result)
        {
            window.close(); // Closing the popup
        }
    });
}

使用$.param传递数据。