$( “”)[0]。点击(); ajax之后没有工作

时间:2016-02-17 16:27:38

标签: jquery ajax click

我会在调用ajax后模拟点击下载文件以生成链接。

Jquery:

$(document).ready(function(){
    $(".vignette-dl").click(function() {
        var id = $(this).find("a").attr("value");
        $.ajax({
            type: "POST", 
            url: "testDL.php",
            data: { dossier: $("#selectDossier").val(), id_doc: id },
            success: function(result){
                $("#secretDiv").html(result);
            }
        });

        $(document).ajaxComplete(function(){
            alert("test");
            $("#forcedl")[0].click(function(){
                alert("test42");
            }); 
        });
    });
});

结果var在secretDiv中添加id =“forcedl”的html链接并完美运行。

ajaxComplete函数被调用,因为我看到了我的警报测试,但点击模拟不起作用,我没有看到警报test42。

我不知道为什么......

3 个答案:

答案 0 :(得分:1)

jQuery.click(handler)仅在单击元素时调用处理程序。

$(document).ready(function(){
    $(".vignette-dl").click(function() {
        var id = $(this).find("a").attr("value");
        $.ajax({
            type: "POST", 
            url: "testDL.php",
            data: { dossier: $("#selectDossier").val(), id_doc: id },
            success: function(result){
                $("#secretDiv").html(result);
                $("#forcedl").click();
            }
        });
    });
    $(document).on('click', '#forcedl', function(e) {
        e.preventDefault();
        window.location.href = $(this).attr('href'); // use href-attribute or just replace with your path/to/file
    })
});

要下载PDF,您需要更改Response-Header - 这必须在服务器端完成。 请参阅下面的.htaccess示例,它将使所有文件在任何大写下载中直接以.pdf结尾。

<FilesMatch "\.(?i:pdf)$">
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</FilesMatch>

对于php示例,请检查下面的代码示例。

<?php
header('Content-type: application/pdf');
header('Content-disposition: attachment; filename=myNewFileName.pdf');
readfile("uri/to/my/file.pdf");

答案 1 :(得分:1)

我相信你的描述是欲望,但我做了一些假设。

$(document).ready(function() {
  $("#secretDiv").on('click', "#forcedl", function() {
    alert("test42");
  });
  $(".vignette-dl").click(function() {
    var id = $(this).find("a").attr("value");
    $.ajax({
      type: "POST",
      url: "testDL.php",
      data: {
        dossier: $("#selectDossier").val(),
        id_doc: id
      }
    }).done(function(result) {
      $("#secretDiv").html(result);
    }).complete(function() {
      alert("test");
      $("#forcedl").trigger('click');
    });
  });
});

答案 2 :(得分:0)

整个方法都是不合逻辑的,你不能拥有以下内容 -

成功 - &gt;点击。

解决方案,创建一个设置为= 0的变量。

关于ajax成功方法make variable = 1。

if === 0 {
 // nothing here
}else{
  // must ===1 something here
}

比其他人的想法快得多