2011-10-13 182 views
3

我想将URL变量传递给我的PHPExcel PHP脚本,以便我可以使用$ _GET数组在脚本中提取它们。
当按下窗体(form1)按钮并且变量基于第二个窗体(filters_form)时,PHPExcel脚本的调用发生。将URL变量传递给PHPExcel和Jquery

{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。
有什么想法为什么?
谢谢!

P.S.我已经检查过使用URL正确编码的警报;此外,使用其他脚本正确识别具有相同变量的完全相同的url。

+0

@Isael:是的,看到它。你有没有尝试没有序列化?我的意思是,表单的动作已经完成,所以没有必要这么做。 – hakre

+0

@hakere - 其实我试图让问题变得更简单,但我基本上不太清楚。让我编辑它一分钟,事情会变得更清晰。谢谢:) – Israel

+0

@hakre - 我编辑了这个问题,如果你再看一下,我会很感激。谢谢! – Israel

回答

2

试图实现什么可能都显得可能你的,但它不是:

从动作属性的查询参数是通过浏览器删除。我认为那不是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; 
    }); 
}); 
+0

非常感谢你,正是我所需要的!虽然我想知道为什么浏览器删除查询参数? – Israel

+1

@以色列:因为它采用了表单元素。这适用于'method =“post”'的表单。请参阅[提交GET表单与查询字符串参数和隐藏参数消失](http://stackoverflow.com/questions/1116019/submitting-a-get-form-with-query-string-params-and-hidden-params-消失) – hakre

+0

好吧,我会检查它,谢谢! – Israel

1

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

<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(); 
    }); 

应正确提交表单。你正在用参数设置表单的动作。没有必要序列化我认为的任何东西。

+0

原因是因为实际上有两种不同的形式,我会重新编辑我的问题。现在写的方式确实没有意义。 – Israel

+0

我编辑过这个问题,如果你再看一下,我会很感激。谢谢! – Israel

+1

hakre完成了我的建议! –