使用javascript(jquery)序列化到新窗口

时间:2013-11-23 05:33:16

标签: javascript jquery

我正在尝试使用javascript(jquery)将表单提交到另一个将结果导出到excel的页面。下面是我用来向页面发送表单数据并将结果返回到同一页面上的div的代码。

 <script type="text/javascript">
 function get3() {
 $.post('chartprojecttype.php', 
 $('form[name="reportform"]').serialize(), 
 function (output) {
 $('#info').html(output).show();
 });
 }
 </script>

我试图像这样修改它,

 <script type="text/javascript">
 function get4() {
 $.post('openticketsexcel.php', 
 {
 document.getElementById(‘reportform’).submit();
 });
 </script>

但它不起作用。我有另一种方法可以做到这一点,并有不同的页面,以不同的格式导出它。

  <input type="image" name="excel" onclick="submitForm('openticketsexcel.php')" value="Export To Excel" src="../pix/excel.png" class="submit_button"><input type="image" name="word" onclick="submitForm('openticketsword.php')" value="Export To Word" src="../pix/word.png"class="submit_button">

 <script type="text/javascript">
     function submitForm(action)
     {
         document.getElementById('reportform').action = action;
         document.getElementById('reportform').submit();
     }
 </script>

这只适用于IE浏览器。 Chrome和FireFox可以使用第一个返回提交数据的代码,但不能使用将其提交到导出页面的代码。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

你忘记了function和一个结束的大括号,你的单引号是卷曲的而不是笔直的。试试这个:

<script type="text/javascript">
    function get4() {
        $.post('openticketsexcel.php', function() {
            document.getElementById('reportform').submit();
        });
    }
</script>

答案 1 :(得分:0)

jQuery帖子应该是这样的

            $.post( "some/url", function( data ) {
                // code goes here
            });

参考

http://api.jquery.com/jQuery.post/

答案 2 :(得分:0)

你有很多问题

1)输入类型=图像是提交按钮。不要在提交按钮的提交中提交,因为您实际上会干扰事件

2)为什么在将表单发布到服务器后需要提交表单?如果你需要服务器返回一个单词或excel,你需要获取(我在下面通过查找位置获取)或POST一个表单 - 但不要使用$ .post,因为浏览器需要打开文件,你不能单词或excel

你可能只想要这个:

<button class="button" id="excel"><img 
alt="Export To Excel" src="../pix/excel.png"/></button>
<button class="button" id="word"><img  
alt="Export To Word" src="../pix/word.png"/></button>
使用

$(function() {
  $(".button").on("click",function(e) {
    e.preventDefault();
    location="opentickets"+this.id+".php?"+$('form[name="reportform"]').serialize();
  });     
});

更简单的解决方案就是

<form action="export.php" target="_blank">
  <input type="submit" name="exportformat" value="Excel" />
  <input type="submit" name="exportformat" value="Word" />
</form>

并让php解决问题