0

私のjQueryコードはこれです:

$(document).ready(function () {
  $("input:#baglan").click(function () {
    var Type;
    var Url;
    var Data;
    var ContentType;
    var DataType;
    var ProcessData;
    WCFJSON();

    function WCFJSON() {

      var kullanici = $("input:#ad3").val();
      var sifre = $("input:#sifre").val();
      Type = "POST";
      Url = "http://hacegan:84/SQLbaglantiHACEGAN/Service.svc/GetData";
      Data = '{"value": "' + kullanici + '","sifre": "' + sifre + '"}';
      ContentType = "application/json; charset=utf-8";
      DataType = "json";
      varProcessData = true;
      CallService();
    }

    //function to call WCF  Service      
    function CallService() {
      $.ajax({
        type: Type, //GET or POST or PUT or DELETE verb
        url: Url, // Location of the service
        data: Data, //Data sent to server
        contentType: ContentType, // content type sent to server
        dataType: DataType, //Expected data format from server
        processdata: ProcessData, //True or False
        success: function (msg) { //On Successfull service call
          ServiceSucceeded(msg);
        },
        error: ServiceFailed // When Service call fails
      });
    }

    function ServiceFailed(result) {
      alert("basarisiz");
      alert('Service call failed: ' + result.status + '' + result.statusText);
      Type = null;
      varUrl = null;
      Data = null;
      ContentType = null;
      DataType = null;
      ProcessData = null;
    }

    function ServiceSucceeded(result) {
      if (DataType == "json") {
        resultObject = result.GetDataResult;
        alert(resultObject);
      }
    }


  });

私のコードは Internet Explorer で実行されていますが、このコードを Firefox または Chrome で実行すると、ServiceFailed 関数でエラーが発生します。このコードを使用して、WCF サービスにアクセスしています。では、どうすれば Firefox と Chrome で動作させることができますか?

4

3 に答える 3

0

varProcessDataではなくProcessDataフラグにする必要があります

function WCFJSON() {

  var kullanici = $("input:#ad3").val();
  var sifre = $("input:#sifre").val();
  Type = "POST";
  Url = "http://hacegan:84/SQLbaglantiHACEGAN/Service.svc/GetData";
  Data = '{"value": "' + kullanici + '","sifre": "' + sifre + '"}';
  ContentType = "application/json; charset=utf-8";
  DataType = "json";
ProcessData = true;
  CallService();
}
于 2013-02-11T08:05:39.680 に答える
0

あなたのコードではServiceFailed、ajax 呼び出しがエラーを返す場合、関数を呼び出しています。

error: ServiceFailed

同じ名前と署名を持つ 2 つの関数があります。

function ServiceFailed(result)

function ServiceFailed(xhr)

Chrome または Firebug のコンソールを使用すると、ajax 呼び出しを確認できます。

こちらをご覧ください: ajax リクエストを追跡するための Chrome の firebug のテクニック

提案:

JSON 文字列を手動で作成する代わりに

Data = '{"value": "' + kullanici + '","sifre": "' + sifre + '"}';

オブジェクトを作成してから、それを文字列に変換できます。

JSON.stringify({value: 'foo', sifre: 'bar'})
于 2013-02-11T08:04:00.760 に答える
0

これは、パラメーターを渡す方が良いと思います:

try putting just click in the doc ready and all the functions outsideこれを使ってみてください。

 $(document).ready(function () {
   $("input:#baglan").click(function () {
    var Type;
    var Url;
    var Data;
    var ContentType;
    var DataType;
    var ProcessData;
    WCFJSON(Type, Url, Data, ContentType, DataType, varProcessData);
   });
 }); // <----------end of doc ready

 function WCFJSON(Type, Url, Data, ContentType, DataType, varProcessData) {
     var kullanici =$("input:#ad3").val();
     var sifre=$("input:#sifre").val();
     Type = "POST";
     Url = "http://hacegan:84/SQLbaglantiHACEGAN/Service.svc/GetData";
     Data = '{"value": "' +kullanici+ '","sifre": "' +sifre+ '"}';
     ContentType = "application/json; charset=utf-8";
     DataType = "json"; 
     varProcessData = true; 
     CallService(Type, Url, Data, ContentType, DataType, varProcessData);
 }

 //function to call WCF  Service      
 function CallService(Type, Url, Data, ContentType, DataType, varProcessData) {
    $.ajax({
    type: Type, //GET or POST or PUT or DELETE verb
    url: Url, // Location of the service
    data: Data, //Data sent to server
    contentType: ContentType, // content type sent to server
    dataType: DataType, //Expected data format from server
    processdata: varProcessData, //<--------------------------should be this
    success: function (msg) { //On Successfull service call
      ServiceSucceeded(msg);
    },
    error: ServiceFailed(err) // When Service call fails
  });
}

function ServiceFailed(result) {
  alert("basarisiz");
  alert('Service call failed: ' + result.status + '' + result.statusText);
  Type = null;
  varUrl = null;
  Data = null;
  ContentType = null;
  DataType = null;
  ProcessData = null;
}

function ServiceSucceeded(result) {
  if (DataType == "json") {
    resultObject = result.GetDataResult;
    alert(resultObject);
  }
}
于 2013-02-11T08:04:27.367 に答える