2016-10-31 20 views
0

を使用してクライアント側でサーバー側の文字列値を取得します.netアプリケーションを1つ作成しています。そして、私は単に私のajax呼び出しでこの "Hi"文字列を取得したいと考えています。私は何をする必要がありますか?今私はいつも未定義になっています。他に何もない。ajax呼び出し.net、C#

私のクライアント側のスクリプトは、ブロー

<script type = "text/javascript"> 
    $(document).ready(function() { 
     $('.cart').click(function() { 
      var id = $(this).attr('id'); 
      CallAddCart(id); 
     }); 
    }); 
    function CallAddCart(ItemId) { 
     $.ajax({ 
      type: "POST", 
      url: "SearchParts.aspx/AddShopCart", 
      data: '{ItemId: "' + ItemId + '"}', 
      contenttype: "application/json; charset=utf-8", 
      datatype: "json", 
      success: function (data) { 
       OnSuccess(data); 
      }, 
      failure: function (response) { 
       alert(response.d); 
      } 
     }); 
    } 

    function OnSuccess(response) { 
     alert('On sucess' + response); 
     alert(response); 
    }   
</script> 

のように見え、UPDATE、私のサーバ側は

[WebMethod()] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public static string AddShopCart(string ItemId) 
    { 
     return "Hi"; 
    } 

次のようになります。問題は、その1つの小さなミスだった

を解決

これらの問題を引き起こした。問題は "contenttype"と "datatype"でした。両方のタイプの "t"は大文字でなければなりません。すなわち "のcontentType" と "データ型" :)現在、こんにちは:)を取得することができ

私はJSONタイプの値を返すように勧めます
+0

のcontentTypeとデータ型に変更: パブリック静的文字列AddShopCart(文字列のItemId) { 戻りString.Formatの( "こんにちは") を} [OK]を –

+0

私はそれを –

+0

@RickBrongerをチェックします私はそれを変えた。しかし今、そのHTMLコンテンツを返す。成功の関数で私のajaxで何かを変更する必要がありますか? –

答えて

0

大文字と小文字を区別。以下のスクリプトでは、正しい使い方で更新しました。

以前は「contenttype」と「datatype」でした。今、この一部変更しようと

<script type = "text/javascript"> 
$(document).ready(function() { 
    $('.cart').click(function() { 
     var id = $(this).attr('id'); 
     CallAddCart(id); 
    }); 
}); 
function CallAddCart(ItemId) { 
    $.ajax({ 
     type: "POST", 
     url: "SearchParts.aspx/AddShopCart", 
     data: '{ItemId: "' + ItemId + '"}', 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (data) { 
      OnSuccess(data); 
     }, 
     failure: function (response) { 
      alert(response.d); 
     } 
    }); 
} 

function OnSuccess(response) { 
    alert('On sucess' + response); 
    alert(response); 
    }   
    </script> 
3

JavaScriptで

[WebMethod()] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public static string AddShopCart(string ItemId) 
{ 
    var result = new { d = "Hi" }; 
    return JsonConvert.SerializeObject(result); 
} 

success: function (data) { 
    OnSuccess(data.d); 
} 
+0

その関数の戻り値の型はどうですか?AddShopCart?また、JsonConvertはエラーが見つかりませんでした私はそれのために任意の名前空間を使用する必要がありますか? –

+0

戻り値をごめんなさい。それは "新しいJavaScriptSerializer()を返します。Serialize(結果)"と戻り値の型は文字列でなければなりません。 @NithinPaul –

+0

@NithinPaul codeplexの例を見てください - > http://www.codeproject.com/Questions/752990/I-Want-to-return-JSON-webservice-using-Asp-net-csh –

2
[WebMethod] 
public static string AddShopCart(string ItemId) 
{ 
    return "Hi"; 
} 

削除します。 [ScriptMethod(ResponseFormat = ResponseFormat.Json)]

Javascriptを

success: function (data) { 
    OnSuccess(data.d); 
} 

クレジット:問題の原因となったhttp://www.aspsnippets.com/Articles/Calling-ASPNet-WebMethod-using-jQuery-AJAX.aspx

+0

結果は同じです:( –

+0

これらの問題の原因となった小さな間違いです。contenttypeとdatatypeで問題がありました。問題は、タイプの "t"が大文字でなければなりません。こんにちは:) –

+0

Ajaxでコーディングのセンシティブなケーススタディです:) –