2017-02-17 84 views
0

到PHP值考慮以下形式:獲取提交了形式

<form method="get" enctype="multipart/form-data"> 
    <input type="hidden" value="0" name="foo"> 
    <input type="checkbox" value="1" name="foo"> 
</form> 

當提交表單,如果未選中該複選框的URL ...?foo=0將要求。如果選中該複選框,則將請求URL ...?foo=0&foo=1。在PHP中,查詢字符串參數將覆蓋任何以前具有相同名稱的參數,因此foo將在處理後一請求的PHP腳本中具有值1

什麼是獲得價值foo將不得不使用JavaScript的PHP腳本,當不知道有關的任何形式的最佳方式?從理論上講,有可能會命名爲不同類型的foo輸入任意號碼,我想知道,foo將不得不在PHP腳本處理請求,如果提交表單的值。

據我所知,答案是名爲foo在最後一個使輸入元素的值。通過啓用,我的意思是input元素沒有被禁用,並且它不是一個按鈕(按鈕的名稱和值不會被添加到查詢字符串,除非該按鈕用於提交表單)或未選中的複選框或單選按鈕。

也許有一個簡單的方法來使用jQuery這個值?

編輯

負載的人建議我重新命名輸入元素foo[]或相似。我想我還不夠清楚,我實際上想要所有名爲foo的輸入元素,並且只接收php腳本中的一個值。

我的問題是如何確定哪些值PHP腳本將獲得使用JavaScript。

+1

爲什麼您的輸入具有相同的名稱?更改foo1和foo2。 –

+2

您是否嘗試過將數組設置爲名稱? ('name =「foo []」') – AymDev

+0

我只想保留最後啓用的'foo',所以它們都應該被命名爲'foo'。 –

回答

0

您可以在全局變量做一個循環$ _GET

foreach($_GET as $key=>$val) { 
    echo "key = $key , val = $val"; 
} 

,如果你有多個同名的投入則需要追加[]的名稱,以便您可以得到所有的值作爲一個數組

<form method="get" enctype="multipart/form-data"> 
    <input type="hidden" value="0" name="foo[]"> 
    <input type="checkbox" value="1" name="foo[]"> 
</form> 

讓jQuery中的值,您執行以下操作:

$('input[name="foo[]"]').each(function(){ 
console.log($(this).val()); 
}); 

如果您只想富的一個值,但你有這個名字,你需要將你的邏輯更改爲使用單選按鈕

+0

我想確定使用JavaScript的價值,而無需提交表單。 –

+0

將你的名字屬性改爲name =「foo [the_variable_name]」,然後在php中,你可以很容易地通過一個變量 – Akintunde007

0

使用這種多元素:

<form method="get" enctype="multipart/form-data"> 
    <input type="hidden" value="0" name="foo[]"> 
    <input type="checkbox" value="1" name="foo[]"> 
</form> 

和PHP,使用:

$params = $_GET['foo']; //params would hold array 

這將是很好的使用。

0

這真是糟糕的設計。你應該檢查你的php(後端)代碼中的複選框狀態。擺脫隱藏輸入:

<form method="get" enctype="multipart/form-data"> 
    <input type="checkbox" value="1" name="foo"> 
</form> 

,並把這個在PHP代碼:

if (isset($_GET['foo'])) { 
    $foo = 1; 
} else { 
    $foo = 0; 
} 

如果要使用JavaScript,你可以試試這個在表單提交:

var checkboxValue = $("input[name='foo']").prop("checked"); 

複選框值將根據複選框狀態爲true或false。