0

WCF サービスを作成し、クライアント側で呼び出します。

<script lang="javascript" type="text/javascript">
    var x;
    function ttsFunction() {
                   var data = new Object();
        data.text = $('#ddl').val();
        var jsonString = JSON.stringify(data);
        x = $.getJSON("http://localhost:8080/wscccService.svc/RunTts?jsoncallback=?", { text: jsonString });
    }
    $('#speak').val = x;
</script>

そしてサービス

namespace wsccc1
{
 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
 [JavascriptCallbackBehavior(UrlParameterName = "jsoncallback")]//"jsoncallback is custom"

 public class wscccService : Iwservice
 {
    [WebGet(ResponseFormat = WebMessageFormat.Json)]
    public string RunTts(string length)
    {
        return Membership.GeneratePassword(Int32.Parse(length), 1);
    }
 }
}

インターフェイス コード:

namespace wsccc1
{
  [ServiceContract]
  public interface Iwservice
  {
     [OperationContract]
    //[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json,
    //    BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "RunTts")]
    string RunTts(string text);
  }
 }

例外は次のとおりです。 エラー

パラメータ「長さ」に何か問題があると思います。これはjson形式です。手伝ってくれてありがとう。

4

1 に答える 1

0

長さ変数を読み取るには、 JSON デシリアライザーを使用する必要があります。現在、Int32.Parse("{\"text\":\"8\"}") を試みていますが、これは意味がありません。

例 (これは Newtonsoft JSON 用です):

public string RunTts(string lengthObject) {
    JToken token = JObject.Parse(lengthObject);
    int length = (int)token.SelectToken("text");
    return Membership.GeneratePassword(length, 1);
}
于 2013-07-30T14:33:07.880 に答える