2016-11-10 22 views
0

ダイナミクスCRM内の外部データにアクセスするためのクロスドメインJavaScriptコールに必要な基準を満たしていると私は思うローカルに動作するWebサービスを持っています。外部WebサービスにアクセスするためのJavaScript AJAXコードを作成する際にエラーが発生しました。クロスドメインASMX Webサービス用JavaScriptのAJAXでエラーJSONPコール

と私は画面に示された結果は、私の問題は、私は適切にJavaScriptを記述する方法を見つけ出すことができませんということですhttp://aloyegeneraltest1/ReturnJSON.asmx/GetPriceJSON

Screen Shot 1

でWebサービスにアクセスすることで表示されるように、以下の1ショット引き起こす可能性があります上記のWebサービスに示されているシリアライズされた項目を実際に取得するコード。

以下のページを実行して「テスト」ボタンをクリックすると、0x800a1391というエラーが表示されます - JavaScriptランタイムエラー:「GetJSONP」は未定義です。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ClientSideGeneralTest._Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "www.w3.org/.../xhtml1-transitional.dtd"> 


<html xmlns="http://www.w3.org/1999/xhtml"> 


     <script language="JavaScript" type="text/JavaScript" src="Scripts/jquery-3.1.1.min.js"> 

function GetJSONP() { 
    debugger; 
$.ajax({ 
    url: "aloyegeneraltest1/.../GetPriceJSON", 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    data: '{"name":' + JSON.stringify(GetData()) + '}' 
    }).done(function(result) { 
    alert(result.d); 
    }).fail(function(result) { 
    alert(result.d); 
    }); 
      } 

} 


</script> 

<head runat="server"> 


    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
<div> 
<input id="Button1" type="button" 
    value="Test" onclick="GetJSONP()" /><br /> 

</div> 
</form> 

    &nbsp; 
</body> 
</html> 

私は完全にjQueryの参照を削除した場合、上記の未定義の関数エラーを排除しますが、示すようにそうすることが、新たな未処理の例外エラーが発生する - 0x800a1391 - JavaScriptのランタイムエラーが「$」は未定義

です新しいエラーが発生し変更したコードは次のようになります。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ClientSideGeneralTest._Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "www.w3.org/.../xhtml1-transitional.dtd"> 


<html xmlns="http://www.w3.org/1999/xhtml"> 


     <script language="JavaScript" type="text/JavaScript"> 

function GetJSONP() { 
    debugger; 
$.ajax({ 
    url: "aloyegeneraltest1/.../GetPriceJSON", 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    data: '{"name":' + JSON.stringify(GetData()) + '}' 
    }).done(function(result) { 
    alert(result.d); 
    }).fail(function(result) { 
    alert(result.d); 
    }); 

} 


</script> 

<head runat="server"> 


    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
<div> 
<input id="Button1" type="button" 
    value="Test" onclick="GetJSONP()" /><br /> 

</div> 
</form> 

    &nbsp; 
</body> 
</html> 

それはAjaxコードの先頭の$の問題のいくつかの種類を持っているように見えます。

私はAJAXを完全に新しくしており、一般的な開発にはかなり新しいので、誰でも助けていただければ幸いです。

答えて

0

私は自分の問題を解決しました。下の2つの異なるスクリプト行を参照してください。

<html xmlns="http://www.w3.org/1999/xhtml"> 
<script language="JavaScript" src="Scripts/jquery-1.7.1.min.js"></script> 
<script language="JavaScript" type="text/JavaScript">** 
    function GetJSONP() { 
     //debugger; 
     $.ajax({ 
      url: "aloyegeneraltest1/.../GetPriceJSON", 
      type: "POST", 
      contentType: "application/json; charset=utf-8", 
1

コードのこれらの行はあなたの問題を解決するかもしれませ

  var jsonData = [YOUR JSON PARAMETER]; 

      $.ajax({ 
       async: false, 
       type: "POST", 
       url: [YOUR WEB SERVICE URL], 
       contentType: "application/json; charset=utf-8",     
       data: JSON.stringify({ json: jsonData }), 
       dataType: "json",     
       success: OnSuccess, 
       failure: function(err) { 
        alert("Error : " + err.d); 
       } 
      }); 

      function OnSuccess(data) { 
       alert("Success:" + data.d);      
      } 

あなただけでアクセス制御 - 許可 - 起源&アクセス制御 - 許可 - ヘッダーを設定する必要があり、そのために一つのことを行うことができますCustomeHeadersあなたのWebサービスweb.configファイル。

<add name="Access-Control-Allow-Origin" value="*" /> 
<add name="Access-Control-Allow-Headers" value="Content-Type" /> 

あなたは、特定のドメインに許可する場合は、代わりに*値のドメインの特定の値でそれを行うことができます

関連する問題