0

シンプルなアプリケーションがあり、MySQLからデータを取得する必要があります。サーバー上のスクリプトを使用して*.phpファイルで実行できることを読みました。必要なのは、qooxdooアプリケーションからこのファイルを実行して印刷データを取得することだけです。コードの一部は次のとおりです。

doWysyl.addListener("execute", function(e)      //doWysyl is button
{
    var req = new qx.io.remote.Request("http://localhost/db_connector.php", "GET", "application/json");
    req.addListener("completed", function(e) 
    {
        alert("Something");

    });
    req.send();

}, this);

db_connector.phpファイル:

<?php
    $db = mysql_connect('localhost', 'root', '');
    if (!$link) {
        die('Can't connect: ' . mysql_error());
    }
    $result = mysql_query("SELECT Id FROM gitterbox WHERE Ukryj=0")
    $dane = array();
    while ($row = mysql_fetch_assoc($result)) {
        $dane [] = $row["Id"];
    }
    mysql_close($link);
    echo json_encode($dane);
?>

私の問題はそのalert( "Something");です。完了したイベントが発生しないように表示されることはありません。私もさまざまなイベントを試しましたが、どれも役に立ちませんでした。私はそれをチェックしたので、db_connect.phpが開かれていると確信しています。


さて、Xhrリクエストを使用するようにコードを編集しましたが、次のようになります。

doWysyl.addListener("execute", function(e) {
    var req = new qx.io.request.Xhr("http://localhost/db_connector.php", "GET");
    req.addListener("success", function(e) {
        alert("success");
    }, this);
    req.addListener("fail", function(e) {
        var reqa = e.getTarget() 
        var response = req.getResponse() 
        alert("fail "+response+". Code: "+reqa.getStatus()) 
    }, this);
    req.send();
}, this);

しかし、問題は、常に失敗イベントが発生し、アラートで次のメッセージが表示されることです。

fail null. Code 0

アラートの直前にブレークポイントを追加しました。これはスタックトレースです(ChromeとWindows 7 x64を使用)。

(anonymous function) (class/custom/MainWindow.js:27)
qx.Class.define.members.dispatchEvent (/D:/qooxdoo-2.0.2-sdk/framework/source/class/qx/event/dispatch/Direct.js:134)
wrappedFunction (/D:/qooxdoo-2.0.2-sdk/framework/source/class/qx/Interface.js:451)
qx.Class.define.members.dispatchEvent (/D:/qooxdoo-2.0.2-sdk/framework/source/class/qx/event/Manager.js:873)
qx.Class.define.statics.fireEvent (/D:/qooxdoo-2.0.2-sdk/framework/source/class/qx/event/Registration.js:310)
qx.Mixin.define.members.fireEvent (/D:/qooxdoo-2.0.2-sdk/framework/source/class/qx/core/MEvents.js:169)
qx.Class.define.members._onError (/D:/qooxdoo-2.0.2-sdk/framework/source/class/qx/io/request/AbstractRequest.js:773)
(anonymous function) (/D:/qooxdoo-2.0.2-sdk/framework/source/class/qx/lang/Function.js:293)
qx.Bootstrap.define.members._emit (/D:/qooxdoo-2.0.2-sdk/framework/source/class/qx/bom/request/Xhr.js:440)
qx.Bootstrap.define.members.__readyStateChangeDone (/D:/qooxdoo-2.0.2-sdk/framework/source/class/qx/bom/request/Xhr.js:897)
qx.Bootstrap.define.members.__readyStateChange (/D:/qooxdoo-2.0.2-sdk/framework/source/class/qx/bom/request/Xhr.js:869)
qx.Bootstrap.define.members.__onNativeReadyStateChange (/D:/qooxdoo-2.0.2-sdk/framework/source/class/qx/bom/request/Xhr.js:808)
(anonymous function) (/D:/qooxdoo-2.0.2-sdk/framework/source/class/qx/Bootstrap.js:551)

また、私が興味深いと思ったのは、[ネットワーク]タブのこれです。お役に立てば幸いです。

4

1 に答える 1

1

まず、qx.io.request.Xhrの使用を提案します。

このページで、それを使用するための詳細な紹介を取得します。

http://manual.qooxdoo.org/1.5/pages/communication/request_io.html

Xhrを使用する場合は、「success」と「fail」または「statusError」をリッスンすることを提案します。これにより、リクエストの何が問題になっているのかがわかります。

于 2012-09-17T08:30:44.653 に答える