3

これは、Safari では機能するが Chrome では機能しない AJAX メソッドです。エラーメッセージが続きます。

$(document).ready(function(){
  $('.infobutton').click(function(){
    $.ajax({
      url: 'http://apps.nlm.nih.gov/medlineplus/services/mpconnect_service.cfm',
      data: {
        'mainSearchCriteria.v.cs': $(this).attr('data-code-system'),
        'mainSearchCriteria.v.c':  $(this).attr('data-code')
      },
      dataType: 'xml',
      async: false,
      method: 'GET',
      success: function(data){
        console.log('success');
        console.log(data);
      },
      done: function(data){
        console.log('done');
        console.log(data);
      },
      error: function(data){
        console.log('error');
        console.log(data.error());
      }
    });
  });
});

コンソール出力ではstatusTexterrorコールバックで が次のように表示されます"Error: NetworkError: DOM Exception 19"このリンクはDOM Exception 19について語っていますが、それは単にNETWORK ERROR. 役に立ちません。

他の調査から、Chrome にはセキュリティや XSS などに関する既知の問題があることがわかっています。

私はこのSO の投稿とこの投稿のすべての提案を試しまし。運がない。

そのクエリ文字列を使用して URL に直接アクセスすると機能します。ここで見ることができます。

また、これはアプリケーションの一部ではないことに注意してください。html は文字通りただの<button class="infobutton">Click Me</button>. これは、AJAX を機能させるための概念実証にすぎません。

更新file:///ローカル (プロトコルを使用) とリモートの両方で、開発サーバーで作業している ときに、この同じエラーが発生することも確認できます。

4

2 に答える 2

1

crossDomain: true設定し、ドメインにロケーション リダイレクトを設定して、nih.gov URL を指すようにする必要があります。

制限を回避する方法の 1 つは、ポリシーで許可されているドメインで要求を開始することです。つまり、リクエストを行っている JavaScript と同じドメインにある必要があります。その後、ページはリクエストを別のドメインにリダイレクトできます。

ローカルページの例

<?php
// http://yourdomain.com/some/url/redirect.php
header("Location: http://apps.nlm.nih.gov/medlineplus/services/mpconnect_service.cfm");
?>

次に、JavaScript の URL を に置き換えますhttp://yourdomain.com/some/url/redirect.php。その効果は、発生している問題を回避することです。

于 2013-07-10T20:37:27.383 に答える
0
  1. エラー処理で console.log(data.status) を使用します
  2. リクエスト URL を確認してください - 404 が返されます (見つかりません)

Fiddler2 を試しましたか - デバッグ用の優れたツール

于 2013-07-11T00:27:43.413 に答える