3

我试图在ajax调用后在jquery中调用用户定义的函数,

需要调用的函数:downloadCurrentKey()

我的要求是点击“generate_billing_key”后,函数downloadCurrentKey()应该自动调用,当我点击标签时,那个时候也应该调用函数。

它在 google chrome 中运行良好,但在 Mozilla Firefox 中运行良好。

以下是js代码,请指导我。

    $(document).on('click', '#generate_billing_key', function(){
    var url = $('#hdGenerateBillingKeyPair').val();


    $.post(url, {


    }, function (data) {

        var obj = JSON.parse(data);
        content="<label id='btn_download_billing_key'>
                      Click here to download key</label>";;

        $("#newKeyDiv").html(content);
        downloadCurrentKey();
    });
});


$(document).on('click', '#btn_download_billing_key', function(){
    downloadCurrentKey();
});

function downloadCurrentKey(){
    var url=$('#hdDownloadBillingKeyPath').val();
        my_form=document.createElement('FORM');
        my_form.name='myForm';
        my_form.method='POST';
        my_form.action=url;
        my_form.submit();
}

url的代码如下

/**
 * @Route("/downloadBillingKey",name="download_billing_key")
 * @Template()
 */
public function downloadBillingKeyAction(Request $request) {
    $file_name="key";
    $file_content="";

    header("Content-type: plain/text");
    header("Content-Disposition: attachment; filename=$file_name.txt");
    header("Pragma: no-cache");
    header("Expires: 0");
    echo $file_content;
    die;
}

谢谢你。

4

2 回答 2

1

就这样,我得到了解决方案。

-从 js 文件中删除函数 downloadCurrentKey()

-在树枝文件中添加了一个表单(而不是调用上面的函数,我调用了这个添加函数的提交事件)

- 控制器中的代码保持不变。

js的代码

 $(document).on('click', '#generate_billing_key', function(){
            var url = $('#hdGenerateBillingKeyPair').val();

            $.post(url, {

            }, function (data) {

            var obj = JSON.parse(data);
           content="<label id='btn_download_billing_key'>
                      Click here to download key</label>";;

                 $("#newKeyDiv").html(content);
                $("#downloadFile").submit();
            });
        });    
    });


$(document).on('click', '#btn_download_billing_key', function(){
    $("#downloadFile").submit();
});

树枝代码

<form method="post" action="{{ path('download_billing_key') }}" id="downloadFile" />
</form>
于 2013-09-27T07:16:59.827 回答
0

您没有发布所有代码,不是吗?

我这么说是因为我试图在这里模拟你的代码,它只在我这样做时才起作用:

在您的示例中,您没有发布任何 js 代码。

之后的所有内容var obj = JSON.parse(data);(如$("#newKeyDiv").html(content)仅在存在要解析的数据时出现。

在这条线上content="<label id='btn_download_billing_key'>Click here to download key</label>";;有两个;

也许最重要的是,也许您应该在页面中附加表单。尝试这个:

function downloadCurrentKey(){
    var url=$('#hdDownloadBillingKeyPath').val();

    // Get the element that will recive the form
    my_tag=document.getElementById("someID");

    my_form=document.createElement('FORM');

    // Append the form in the page before you post
    my_tag.appendChild(my_form); 

    my_form.name='myForm';
    my_form.method='POST';
    my_form.action=url;
    my_form.submit();
}

您的页面必须具有以下内容:

<p id="someID"></p>

我希望它对你有帮助。

于 2013-09-19T13:03:12.570 回答