2012-09-13 64 views
0

我從來沒有做過這樣的事情,我想知道如何去做。我需要把4個輸入到一個子陣列,如果它是外地html和javascript同名多輸入 - 如何?

我知道,當我$ _POST表單到服務器它發送輸入的名稱,但我怎麼讓輸入被允許有同名

例如

子陣列我需要它是在爲提供 這裏是什麼我不知道。我如何得到以下輸入

<input name="offers[]['minspend']" value="15.00"/> 
<input name="offers[]['minspend']" value="5.00"/> 

<input name="offers[]['minspend']" value="19.00"/> 
<input name="offers[]['minspend']" value="8.00"/> 

<input name="offers[]['minspend']" value="30.00"/> 
<input name="offers[]['minspend']" value="7.00"/> 

<input name="offers[]['minspend']" value="100.00"/> 
<input name="offers[]['minspend']" value="10.00"/> 

這是正確的還是錯誤的?

謝謝

+0

通常,將多個具有相同名稱的輸入發送到服務器時沒有問題。如果您運行的是螢火蟲或小提琴手,您可以觀看發送至服務器的請求,並查看輸入是如何通過的。我只是將輸入名稱命名爲「offer」,因爲它應該作爲offer提供給服務器[] – scrappedcola

+0

這個問題與JavaScript有什麼關係? –

回答

1

這種形式

<input name="offers['minspend'][]" value="15.00"/> 
<input name="offers['minspend'][]" value="5.00"/> 

<input name="offers['minspend'][]" value="19.00"/> 
<input name="offers['minspend'][]" value="8.00"/> 

<input name="offers['minspend'][]" value="30.00"/> 
<input name="offers['minspend'][]" value="7.00"/> 

<input name="offers['minspend'][]" value="100.00"/> 
<input name="offers['minspend'][]" value="10.00"/> 

var_dump($_POST) [假定形式的method = post]給:

array(1) { 
    ["offers"] = > array(1) { 
     ["\'minspend\'"] = > array(8) { 
      [0] = > string(5)"15.00" 
      [1] = > string(4)"5.00" 
      [2] = > string(5)"19.00" 
      [3] = > string(4)"8.00" 
      [4] = > string(5)"30.00" 
      [5] = > string(4)"7.00" 
      [6] = > string(6)"100.00" 
      [7] = > string(5)"10.00" 
     } 
    } 
} 

所以,這是你怎麼做。

你可以刪除'附近的minspend。他們不需要。

你幾乎在那裏。 offers[]['minspend']意味着你:

array(){ 
    array(){ 
     'minspend' => "15.00" 
    } 
    array(){ 
     'minspend' => "5.00" 
    } 
    .. and so on 
} 

所以發生的是,當你這樣做arr[] = 11插入陣列arr

0

那麼首先讓我告訴你我從這個問題中瞭解到什麼。您希望多個輸入字段具有相同的名稱,然後您想要選擇它們以執行某些操作。如果是這種情況,我想提出一種不同的方法 - 爲什麼不把相同的類(cssclass)分配給所有想要具有相同名稱的控件?這樣你就可以使用document.getElementsByClassName("yourclassName")一起選擇它們。它將返回一個所有具有類屬性爲yourclassName的元素的數組。 或者如果你想堅持名字,那麼你可以使用document.getElementsByName("elementName");,它會返回一個名稱爲elementName的元素數組。 希望它有幫助。

+0

爲了更加內聯他們想要的:可以使用'Name'而不是'ClassName'。 – Rhyono

+0

是的,也是有效的。 'document.getElementsByName(「name」);' –

+0

OP提到將字段發送到服務器。在這種情況下,'name'很重要,而不是'class'。 –

1

這取決於處理您的請求(java,php,whatnot)的後端技術,但是從html的角度來看,具有相同名稱的多個元素只會使用相同的參數名稱發送它們的值。你不需要任何特殊的[]語法。

是提供內置了對HTML請求的支持
GET /mypage.html?offer=15.00&offer=5.0&offer=19.0 (etc, could be post too) 

大多數語言代表這個請求作爲一個地圖,都有一個名爲「要約」鍵,它是一個包含提交的值的數組或列表的值。

例如http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getParameterMap()

+0

從它的外觀('$ _POST'),提問者正在使用PHP。在我見過的所有PHP示例中,特殊括號符號'[]'總是存在的。我不知道是否需要,但我的印象是它是。 –

+0

我已經做了非常有限的php,但這是一個http事情......如果這樣的事情是在PHP中完成的,它可能是一個命名約定。 (但不知道)。 – Gus

+0

在文檔中的評論似乎支持這個概念:注意他們反覆命名55的例子... http://www.php.net/manual/en/reserved.variables.post.php – Gus