1

オブジェクトに読み込みたいモック json ファイルがあります。私のコードは次のようになります。

m = require('mithril');

/* .. snip .. */

var foo = m.prop([]);

m.request({
    method: 'GET',
    url: './foo.json',
    unwrapSuccess: function (a, b) {
        console.log("success");
    },
    unwrapError: function (a, b) {
        console.log("error");
    }
}).then(function (a) {
    // fill in foo
    console.log("object filled");
});

コードは常にunwrapErrorフックのみにヒットします。

私を本当に混乱させているのは、次の2つのことです。

  • リクエストは正常に行われました - Chrome の開発ツールで確認できます。アクセス エラーの兆候はまったくありません。
  • エラー フックが受け取る最初の引数は、まさに期待どおりの JSON です。2 番目の引数は、対応する XMLHttpRequest オブジェクトであり、エラーは示されません。

したがって、ドキュメントに反して、応答オブジェクトには、何が起こったかを示す「エラー」プロパティが含まれていません。

私は何を間違っていますか?

4

1 に答える 1

2

使用方法を示す例を作成しましたunwrapSuccess/unwrapError

// No need for m.prop since m.request returns a GetterSetter too
var foo = m.request({
    method: 'GET',
    url: '//api.ipify.org?format=json',
    unwrapSuccess: function (a, b) {
        console.log("success: " + a.ip);
        // Remember to return the value that should be unwrapped
        return a.ip;
    },
    unwrapError: function (a, b) {
        console.log("error");
    }
}).then(function (ip) {
    console.log("object almost filled");
    // And remember to return the value to the GetterSetter
    return ip;
});

m.mount(document.getElementById('content'), { 
    view: function() { return "Your IP: " + foo(); }
});

ここでテストしてください: http://jsfiddle.net/ciscoheat/LL41sy9L/

編集:実際の問題は、ローカルファイルがajaxリクエストを行っていたことです。file://Chrome はURLからの ajax 呼び出しを許可しません。Node.jsの http-serverのような単純な Web サーバーを使用すると、この問題に対処できます。

于 2015-06-09T10:47:07.680 に答える