2017-01-23 129 views
0

我有一個表格:URL的POST請求(JS)

<form> 
     <input id = "sendLink" type = "text" placeholder = "insert a link here"> 
    </form> 

然後我試圖發送數據(這是一個URL(字符串)就像http://sameURL.com):

 xmlhttp.open('POST', 'http://host:8453/page.htm', true); 
     xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 
     xmlhttp.send($link); 

但在服務器端我收到一個 '分裂' 後身體:

"headers": { 
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 
    ... 
    more headers here 
    ... 
    "User-Agent": "Mozilla/5.0" 
}, 
"httpVersion": "1.1", 
"method": "POST", 
"post": { 
    "http://sameURL.com": "" 
}, 
"postRaw": "http://sameURL.com", 
"url": "/page.htm" 

}

爲什麼我得到

http://sameURL.com 」: 「http://sameURL.com

在後機身,而不是

」?謝謝。我需要無額外冒號和「」的請求。 我應該只使用「http://sameURL.com」字符串。

UPD 1

測試目的: $鏈接= 「https://google.com?q1=asdf?q2=ddd?q3=ppp」;

在這種情況下,我們得到:

"post": { 
     "https://google.com?q1": "asdf?q2=ddd?q3=ppp" 
}, 
"postRaw": "https://google.com?q1=asdf?q2=ddd?q3=ppp", 
+0

你能提供'$ link'變量的動態初始化?我猜你發送的JSON只有一個鍵值和沒有值。因此,當你用PHP解碼時,訪問'arr ['http://sameURL.com']'會返回一個空字符串。 –

+0

手動設置字符串的結果是:$ link =「https://google.com」;.在服務器上:「post」:{「https://google.com」:「」}, – sameuser

+0

評論中該死的分析器添加了新字符並刪除了像h t t p一樣的符號。請查看相關的UPD1部分。 – sameuser

回答

0

的原因是你沒有正確發送數據。

看看這個:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send

UDP 1:

"https://google.com?q1": "asdf?q2=ddd?q3=ppp" 

你沒有&符號發送多個鍵值對。另外,請閱讀這些請求中通常如何發送和接收數據。

如果我是你,我會做到以下幾點:

$link = "link=https://google.com&q1=asdf&q2=ddd&q3=ppp"; 

我沒有測試它,但它應該導致:

"post": { 
    "link": "https://google.com, 
    "q1" : "asdf", 
    "q2" : "ddd", 
    "q3" : "ppp" 
} 

原始的問題

在您原始網址的情況下:

$link = "link=http://sameURL.com"; 

這將顯示:

"post": { 
    "link": "http://sameURL.com" 
} 
+0

謝謝你的解釋。現在所有作品:) – sameuser

+0

對不起,不能投票提出你的問題,因爲需要15分的聲望。 :( – sameuser