我試圖使用winjs.xhr將一些數據發佈到URL,但沒有成功。我基本上用XMLHttpRequest做了同樣的事情。這只是感覺不對,因爲winjs.xhr,我想,無論如何,包裝XMLHttpRequest。任何人都可以解釋我如何在winjs.xhr中做到這一點?winjs.xhr數據的正確語法是什麼
不工作winjs.xhr代碼
在傳承的一切作爲一個URL編碼字符串
var url = "http://localhost/paramecho.php";
var targetUri = "http://localhost/paramecho.php";
var formParams = "username=foo&password=bar" //prefixing with a '?' makes no difference
//ends up with same response passing an object(below) or string (above)
//var formObj = {username: "foo", password: "bar"}
WinJS.xhr({
type: "post",
url: targetUri,
data: formParams
}).then(function (xhr) {
console.log(xhr.responseText);
});
我最終的參數我接收PHP文件越來越沒有,好像我已經給無數據在第一位。
我嘗試了一些東西,但上面的代碼是最簡單的例子。如果我要傳遞一個對象到數據參數中,它的行爲方式是相同的(註釋掉)。我已經使用了FormData對象以及普通的JSON對象。
我更改了我的應用清單以具備正確的網絡功能 - 下面的工作示例是在同一個應用中完成的,因此我相信這不是與功能相關的。使用XMLHttpRequest的
var username = "foo";
var password = "bar";
var request = new XMLHttpRequest();
try {
request.open("POST", "http://localhost/paramecho.php", false);
request.setRequestHeader('Content-type', "application/x-www-form-urlencoded");
request.send("username=" + encodeURIComponent(username) + "&password=" + encodeURIComponent(password));
console.log(request.responseText);
} catch (e) {
console.log("networkError " + e.message + " " + e.description);
}
工作版本和成功調用我的PHP服務器端功能,與我想象中的參數。
所以,問題是...我如何實現我在XMLHttpRequest中使用winjs.xhr的工作?它感覺像winjs.xhr這種方式應該工作(我是一個在Windows 8應用程序開發的新手,所以我很高興能夠糾正)
的可能重複的[發佈JSON對象槽WinJS.XHR](http://stackoverflow.com/questions/19007540/posting-json-object-trough-winjs-xhr) – WiredPrairie
這只是一個薄包裝。它不會自動設置內容類型的標題。您會在工作示例中看到您添加了標題,但在WinJs版本中,您沒有。 – WiredPrairie