2011-10-13 144 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完成了我的建議! –