2016-03-30 52 views
0

JQueryコールからWebMethodの戻り値を取得しようとしていますが、「未定義」メッセージが表示されています。ここでJQueryからWebMethodの戻り値を取得する方法

$.ajax({ 
     type: "POST", 
     url: "Receipt/BarcodeEntered", 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "text", 
     success: function (msg) { 
        alert(msg.d); // This displays "Undefined" 
        alert(msg); // This displays the whole html 
       } 
}); 

以下の私のコードであり、WebMethod属性が

[WebMethod] 
public static string BarcodeEntered() 
{ 
    return "test_string"; 
} 

を下回っているどのように私は、WebMethod属性の値を取得し、クライアント側でそれを表示することができますか?

答えて

2

WebMethod officialyは、XMLまたはJSONのみを返すことができます。 デフォルトはJSONですので、あなたが返す何がdataType: "json",

$.ajax({ 
     type: "POST", 
     url: "Receipt/BarcodeEntered", 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
        alert(msg); 
       } 
}); 

JQueryのに

変更をJSONに変換されると、あなたはクラスではない単一の文字列を返す必要があります。 stringは有効なjsonオブジェクトを変換できないためです。

public class SampleClass{ 
    public string Message {set; get;} 
} 

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public SampleClass BarcodeEntered() 
{ 

     return new SampleClass(){ 
     Message = "Sample message" 
    }; 

} 
+0

こんにちは、私は申し訳ありませんが、それは –

+0

...私はすでに試みたが、それは誤り "をparsererror" を与えます申し訳ありませんが、C#コードで間違いがありました。もう一度やり直してください –

+0

を参照してください@ayilmaz –

0

JSONを返す必要があります。例を挙げておきます。

public JsonResult DoStuff() 
{ 
    string text = "text"; 

    return Json(text, JsonRequestBehavior.AllowGet); 
} 
0

私はasp.netページでこれを使用しています。データはdプロパティになります。

JQueryコード。

$.ajax({ 
    type: "POST", 
    url: "/Subfolder/MyPageName.aspx/myWebMethodName", 
    data: '{}', 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (msg) { 
     if (msg.d == "OK") { 
     alert("OK") 
     } else { 
     alert(msg.d); 
     } 
    } 
    }); 

C#コード

[WebMethod] 
public static string myWebMethodName() 
{ 
    return "OK"; 
} 
関連する問題