-1

私はjQueryを初めて使用し、Webサービス用のクライアントを開発しようとしています。テストのためだけに簡単なことを試しましたが、それでもうまくいきません。

tomee / webappフォルダーにjQueryライブラリがあり、htmlファイルとjavascriptファイルもあります。javascriptファイルにjQuery以外のコードを書くと、機能します。

私は次のコードを持っています:

index.html

<!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript" src="client.js"></script>
    </head>
    <body>
        <input type="button" id="getAllButton" value="Get all books" onclick="return getAllBooks()"/>
        <div id="messageBox"></div>
    </body>
</html>

client.js

function getAllBooks() {
    $.ajax({
        dataType: 'application/xml',
        type: 'GET',
        url: rootURL + '/books',
        success: function (data) {
            alert(1);
        },
        error: function (data) {
            alert(2);
        }
    });
}

問題は、アラートが表示されないことです。純粋なJavaScriptを書き込む場合(つまり、jQueryなし)、アラートが表示されます。

アラートが表示されないのはなぜですか?何かアドバイス?

ありがとうございました!

ソリン

4

2 に答える 2

0

ヒントをありがとうcharlietfl!彼らは私が問題を解決するのを手伝ってくれました。

問題は、rootURLが誰であるかを知らなかったことです。例でrootURLを見つけましたが、これはjQueryで定義されているものだと思いました。そうではないようです。

于 2012-12-01T13:52:13.530 に答える
0

何が機能し、何が機能しないかを調べてみましょう。client.jsを次のように変更してみてください。

alert(1); 
function getAllBooks() {
    alert(2);
    window.open(rootURL + '/books'); 
    $.ajax({
        dataType: 'application/xml',
        type: 'GET',
        url: rootURL + '/books',
        success: function (data) {
            alert(3);
        },
        error: function (data) {
            alert(4);
        }
    });
}

アラート#1(htmlページがロードされたとき)が表示された場合は、client.jsパスに問題はありません。アラート#2(ボタンをクリックしたとき)が表示された場合は、少なくとも関数が呼び出されています。

window.open()がWebサービスに表示されるはずの内容を示しているかどうかを確認します(エラーメッセージでも正しいパスをスローするようにガイドします)。そしてもちろん、アラート#3または#4が表示された場合、問題はそれ自体で不思議なことに解決されました....時々発生します:-)

注:ブラウザのjavascriptコンソールの使用方法を知っている場合は、デバッグにalert()ではなくconsole.log()を使用してください。

于 2012-12-01T13:40:13.003 に答える