2013-07-17 105 views
0

我第一次添加了一些巨大的東西,混合JS,PHP,THREE和其他很多東西。這是我試過的。通過JS將POST數據傳遞給PHP失敗

當有人點擊THREE.js場景到人體上時,選擇人體的一部分,然後將javascript添加到我想用PHP/MySQL將選定內容保存到數據庫中的一個。

THREE.js場景起作用,我可以選擇/取消選擇事物並生成動態HTML輸出。例如,我得到這樣產生的一種形式:

<canvas width="1680" height="949"></canvas> 
<div id="Description">Will be added to database:</div> 
<form id="BodyParts" method="POST" action="index.php?s=cinput"> 
    <input type="checkbox" id="leg_right" name="leg_right" disabled="" value="leg_right"> 
    <div id="leg_right_Description">Rechtes Bein</div> 
    <input type="checkbox" id="leg_left" name="leg_left" disabled="" value="leg_left"> 
    <div id="leg_left_Description">Linkes Bein</div> 
    <input type="checkbox" id="torso_top" name="torso_top" disabled="" value="torso_top"> 
    <div id="torso_top_Description">Obertorso</div> 
    <input type="submit" value="Speichern" id="Submit"> 
</form> 

因此,在點擊提交我只是用的var_dump($ _ POST)按鈕後,在我接收cinput.php文件。但它給出了一個空陣列。然而,當試圖重新加載網站時,Chrome告訴我一些數據已經發送,我需要再次驗證。你知道我的意思。上述生成的HTML表單無法正常工作,並且不會發送我可以在PHP中使用的POST數據?

+2

如何發佈一些可讀代碼而不是單行? – Styphon

+0

@ Styphon:因爲沒有什麼可以發佈的。上面的代碼是從我的JS/THREE.js場景中自動生成的表單,我點擊了它。它基本上就是使用var_dump($ _ POST)提交的form()和接收文件;沒有什麼可以發佈的! – Shiuyin

+0

這並不會阻止你進入和格式化它,因此它是可讀的。 –

回答

3

您在所有輸入字段中都有disabled屬性。即使該屬性值爲空(""),該屬性的存在也​​會導致該字段被禁用。已禁用的字段是不是與表單的其餘部分一起提交。由於您的整個表單只有禁用的輸入,因此您完全不提交任何內容。

例如

<input type="text" value="foo" disabled="" /> 
<input type="text" value="bar" disabled="false" /> 
<input type="text" value="baz" disabled="disabled" /> 

所有這三個輸入都被禁用,即使通過「人類」邏輯,你也希望只有最後一個被禁用。

您的提交按鈕未被禁用,但由於沒有name屬性,因此它也不會向表單提交任何內容。

+0

咦?我添加了它們是因爲我想將這些複選框設置爲「只讀」。正如你所說的「殘疾」不像「只讀」。 Pfff。謝謝! – Shiuyin

+0

禁用將它們變成基本上窗口裝飾。它們看起來像輸入元素,但不像輸入元素那樣激活。只讀啓用它們,但不可更改。 –

+0

嗯,但是當我現在使用JS來設置input.readonly = true;我仍然可以更改複選框的值(我可以選擇/取消選擇)。爲什麼? – Shiuyin