2014-04-28 61 views
0

當使用Javascript生成表單以發佈到iframe中時,如何將單個字符串作爲值發佈,而不附帶任何屬性名稱?如何使用POST提交表單數據以獲取唯一值

我有此輸出(在谷歌瀏覽器控制檯):

表數據:

數據:「{ '顏色': '藍', '形狀':「圓「}」

時,我實際上是尋找:

表單數據:

「{ '色': '藍色', '形': '圓圈'}」

我的代碼:

var f = document.createElement("form"); 
    var i = document.createElement("input"); 
    i.setAttribute('type',"text"); 
    i.setAttribute('name',"data"); 
    i.setAttribute('value',"{'color': 'blue', 'shape': 'circle'}"); 
    f.appendChild(i); 
    f.submit(); 

請注意,我不能使用普通Xhr呼叫這是一個跨域任務。

+0

爲什麼不只是有兩個輸入字段與關聯的名稱和值? 'i1.setAttribute( '類型', 「文本」); i1.setAttribute('name',「color」); i1.setAttribute('value',「blue」); i2.setAttribute('type',「text」); i2.setAttribute('name',「shape」); i2.setAttribute('value',「circle」);' –

回答

0

如果我的理解正確,您正在嘗試使用HTML表單提供一個data/json負載。這是不可能的,一個HTML表單只能用三種編碼類型之一發送數據(由表單上的enctype屬性控制),application/x-www-form-urlencoded(POST的默認格式),multipart/form-data(在進行文件上傳時必要)或text/plain(過時,不要使用這個)。

使用AJAX也無濟於事,跨域AJAX僅限於做一個HTML表單,除非服務器發送一個Access-Control-Allow-Origin標題。

如果您可以控制服務器,則可以更改它期望的數據格式(或發送Access-Control-Allow-Origin,但支持更少的瀏覽器)。如果你不這樣做,你可以在服務於Javascript的服務器上設置一個簡單的API,以將請求傳遞給其他服務器。即使是一個簡單的PHP腳本也足夠了。

+0

謝謝@wingedsubmariner。我試圖避免API路線,但它看起來像他們不會是任何其他的選擇 – yvesb

相關問題