0

JQuery、Json、および Web サービスの呼び出しを試みるのはこれが初めてです。

JQuery を使用して webservice を呼び出す必要があります。これにより、Json オブジェクトが返され、それを javascript 変数に保存する必要があります。少しだけ書いてみました。これが実際にあなたのやり方であることを誰かに確認してもらいたいだけです。インスタンス化して、会社のサーバーで何かを台無しにする可能性がある前に。とにかく、ここにあります:

var returnedJson = $.ajax({
    type: 'Get',
    url: 'http://172.16.2.45:8080/Auth/login?n=dean&p=hello'
});

JQuery を使用して Web サービスを呼び出し、返された jsonObject を JavaScript 変数に割り当てます。誰でもこれが正しいことを確認できますか?

前もって感謝します!

4

3 に答える 3

1
var returnedJson = $.ajax({
    type: 'Get',
    url: 'http://172.16.2.45:8080/Auth/login?n=dean&p=hello'
});

このようreturnedJsonにすると、XHRオブジェクトになり、後のjsonではなくなります。成功コールバックでそれを処理したいとします。このようなもの:

$.ajax({
    // GET is the default type, no need to specify it
    url: 'http://172.16.2.45:8080/Auth/login',
    data: { n: 'dean', p: 'hello' },
    success: function(data) {
         //data is the object that youre after, handle it here
    }
});
于 2012-05-23T08:14:54.883 に答える
1

jQuery ajax関数はデータを返さず、jQueryjqHXRオブジェクトを返します。

データを処理するには成功コールバックを使用する必要があります。また、Darinが言及しているのと同じオリジンポリシーを処理する必要があります。

于 2012-05-23T08:15:05.857 に答える
1

誰でもこれが正しいことを確認できますか?

このスクリプトを保存したドメインによって異なります。ブラウザーに組み込まれている同一オリジン ポリシーの制限により、クロス ドメイン AJAX 要求を送信することはできません。これは、このスクリプトを提供するページがhttp://172.16.2.45:8080このクエリでホストされていない場合、機能しないことを意味します。このポリシーに違反していないことを確認する最善の方法は、相対 URL を使用することです。

$.ajax({
    type: 'Get',
    url: '/Auth/login?n=dean&p=hello'
});

同じオリジン ポリシーの制限にはいくつかの回避策がありますが、使用しようとしているサービスの変更が必要になる場合があります。これは、クロスドメイン AJAX 呼び出しを実行する必要がある場合に考えられるいくつかの回避策をカバーする素晴らしいガイドです。

また、コードには別の問題があります。$.ajax呼び出しの結果をいくつかのreturnedJson変数に割り当てました。しかし、それは AJAX の仕組みではありません。AJAX は非同期です。これは$.ajax、リクエストがバックグラウンドで実行され続けている間、関数がすぐに戻ることを意味します。サーバーがリクエストの処理を終了し、レスポンスを返すと、successサブスクライブする必要があり、自動的に呼び出されるコールバックで結果が利用可能になります。

$.ajax({
    type: 'Get',
    url: '/Auth/login?n=dean&p=hello',
    success: function(returnedJson) {
        // use returnedJson here
    }
});

コードに関するさらに別の発言: 認証を実行し、ユーザー名とパスワードを送信する Web サービスを呼び出しているようです。この情報がクリア テキストで送信されるのを避けるには、SSL を使用することを強くお勧めします。

于 2012-05-23T08:10:56.833 に答える