$ .Ajax在Windows 8 metro应用程序中不起作用

时间:2012-04-28 14:29:02

标签: html5 windows-8 windows-runtime

我正在尝试将现有的html5应用程序迁移到Metro应用程序中,并找到两个主要障碍:

    由于安全原因,
  1. .innerHtml不受支持
  2. $ .Ajax不起作用(我使用jsonp从服务器进行数据交换)
  3. 问题:

    1. 如何绕过.innerHtml的安全问题?
    2. 我还有什么其他选择让$ .Ajax工作?

2 个答案:

答案 0 :(得分:1)

Q2:我遇到了类似的问题,我将$ .get更改为:

function getJSON(url, data, callback, errorCb) {
if (data != null)
{
    var params = [];
    for (var key in data) {
        params.push(key + "=" + encodeURI(data[key]));
    }
    url += "?" + params.join("&");
}

WinJS.xhr({ url: url }).then(
    function (result) {
        if (callback != null)
            callback(result.response, result.status);
    },
    function (result) {
        if (errorCb)
            errorCb(result.status);
    });
}

答案 1 :(得分:0)

Q1:当您使用.innerHtml动态内容时,WinRT块会抛出异常或警告。但它们并不会阻止您一直使用.innerHTML。您是否尝试过以下toStaticHTML方法:

element.querySelector("#myId").innerHTML = "some string" + toStaticHTML(yourHTMLContent);

Q2:常规javascript xhr通话适用于我。实际上我认为我之前使用.ajax发送了一些简单的GETPOST请求,但由于某些其他原因最终使用了xhr

希望这有帮助。