1

貼り付けたこの関数を使用して、node.js サーバーで一連のクロス ドメイン URL から html コードを取得しようとしています。これを非同期で行うと、必要な html を取得できます。ただし、この関数の外で行われる他のすべてを適切に機能させるのに苦労しています。私が今持っているように、これを同期的に行うと、この関数の外側のすべてが正常に機能しますが、私の ajax 呼び出しはどれも成功せず、this.url は未定義です。

私はこれを行うためにjqueryノードモジュールを使用しています。

これは、コンソールに記録されるエラーです: [TypeError: 未定義のプロパティ 'headers' を読み取れません]

どんな助けでも大歓迎です。

function myFunction( catname, myurl ){

var htmlresult="";

  $.ajax({
    type: "GET",
    url : "http://"+myurl,
    dataType: 'html',
    context: this,
    async: false,
    cache: false,
    error: function(xhr, status, ethrown){
      console.log("THERE WAS AN ERROR");
      console.log(this.url);
      console.log(catname);
      console.log(status);
      console.log(ethrown);

      htmlresult = myurl;
    },
    success : function(result){
      console.log(this.url);
      console.log("SUCCESS");
      console.log(catname);
      //console.log(result);

      htmlresult = result;
    }
})

return htmlresult;
}

これを読んでいただきありがとうございます。

4

1 に答える 1

0

この場合、ジョブを実行するために同期要求モードを実際に使用しないでください。ノードを使用していて、同期的に何らかの作業を実行したい場合は、promise/deffered コンセプトを使用する必要があります。以下の例を参照してください

var Deferred = require("promised-io/promise").Deferred;
var def = new Deferred();

request(this.getUrl("statusObject"), function(err, resp, body) {
    if(!err){
        def.resolve(body);
    }
}

def.promise.then(function(val){
    //Do something.
});
于 2014-02-17T17:46:16.080 に答える