【问题标题】:Passing URL variables to PHPExcel with Jquery使用 Jquery 将 URL 变量传递给 PHPExcel
【发布时间】:2011-10-13 12:25:29
【问题描述】:

我正在尝试将 URL 变量传递给我的 PHPExcel PHP 脚本,以便我可以使用 $_GET 数组在脚本中提取它们。
当按下表单 (form1) 按钮时调用 PHPExcel 脚本,并且变量基于第二个表单 (filters_form)。

{filters_form 是一个通用的“过滤器”表单,它服务于不同的脚本,例如过滤 JqGrid。意思是说,它与form1分开是有原因的。 form1 是我放置一个调用 PHPExcel 脚本的按钮的地方,该脚本还需要使用 filters_form 提供的相同过滤器}

因此,我正在尝试使用 Jquery 来调用 PHPExcel 脚本:

$(document).ready(function() {
  $('#form1').click(function() {
    var filters_form_serialized = $('#filters_form').serialize();
    var URL = 'PHPExcel_script.php?' + filters_form_serialized;
    $('#form1').attr('action', URL);
    $('#form1').submit();
  });
});

form1 是:

<form id="form1" action="" method="get" target="_blank">
 <button id="form_button" type="button"></button>
</form>

filter_form 是:

<form id="filters_form">
 <input name="input1" type="checkbox" value="0" checked="checked" />
 <input name="input2" type="checkbox" value="1" checked="checked" />
</form>

PHPExcel 脚本确实被调用了,但是该脚本无法识别/获取 $_GET 数组中的任何变量,例如:

if(isset($_GET['input1']))
  {echo "TRUE";}
else
  {echo "FALSE";}

返回 FALSE。
有什么想法吗?
谢谢!

附:我已经使用警报检查了 URL 编码是否正确;此外,使用其他脚本可以正确识别具有相同变量的完全相同的 url。

【问题讨论】:

  • @Isael:是的,看到了。你试过没有序列化吗?我的意思是,表单的操作是获取,所以没有必要这样做。
  • @hakere - 实际上我试图让问题更简单,但我基本上让它不太清楚。让我编辑一下,事情会变得更清楚。谢谢:)
  • @hakre - 我已经编辑了这个问题,如果你再看一看,我将不胜感激。谢谢!

标签: php jquery phpexcel


【解决方案1】:

您尝试实现的目标在您看来似乎是可能的,但事实并非如此:

action 属性中的查询参数由您的浏览器删除。我认为那不是 obvious 给你的。

幸运的是,你不需要那个。

而只是设置一个新位置:

$(document).ready(function() {
  $('#form1').click(function() {
    var filters_form_serialized = $('#filters_form').serialize();
    var URL = 'PHPExcel_script.php?' + filters_form_serialized;
    window.location.href = 'http://your.host/and/path/to/' + URL;
  });
});

【讨论】:

【解决方案2】:

我不明白你为什么不干脆做:

<form id="the_form" action="PHPExcel_script.php" method="get" target="_blank">
 <input name="input1" type="checkbox" value="0" checked="checked" />
 <input name="input2" type="checkbox" value="1" checked="checked" />
 <button id="form_button" type="button"></button>
</form>

  $('#form_button').click(function() {
    $(this).submit();
  });

应该正确提交表单。您正在使用参数设置表单的操作。无需序列化我认为的任何内容。

【讨论】:

  • 原因是因为实际上有两种不同的形式,我将重新编辑我的问题。现在的写法确实没有意义。
  • 我已经编辑了这个问题,如果您再看一下,我将不胜感激。谢谢!
  • hakre 完全按照我的建议去做!
猜你喜欢
  • 1970-01-01
  • 2014-04-08
  • 2019-04-07
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多