0

私はAJAXが初めてで、次の方法でWCF Webサービスにアクセスしようとしています:

$(function () {
    $('#formNew').submit(function () {
        var datos = {
            "Nombre": $('#nombre').val(),
            "ApellidoP": $('#appP').val(),
            "ApellidoM": $('#appM').val(),
            "UserName": $('#username').val(),
            "Password": $('#password').val(),
        };
        var args = "Data=" + JSON.stringify(datos);
        var url = 'http://127.0.0.1:81/SismosService.svc/usuario/new?' + args;
        alert(url);
        $.ajax({
            type: 'GET',
            url: url,
            success: function (data) {
                alert("Exito " + JSON.stringify(data));
            },
            error: function (data) {
                alert("Error " + JSON.stringify(data));
            }
        });
    });
});

フォームに入力して送信ボタンをクリックすると、Firebug で次のエラーが発生します。

N

S_ERROR_NOT_AVAILABLE: prompt aborted by user
[Break On This Error]   

throw Components.Exception("prompt aborted by user", Cr.NS_ERROR_NOT_AVAILABLE)

私のWebサービスは次のように定義されています:

    [WebGet(UriTemplate = "/usuario/new?Data={data}",
    RequestFormat = WebMessageFormat.Json,
    ResponseFormat = WebMessageFormat.Json,
    BodyStyle = WebMessageBodyStyle.Bare)]
    ResponseObject<Usuarios> NewUsuario(string data);

私は何を間違っていますか?パラメータを送信する方法はありますか?Web サービスにアクセスしようとしている方法はありますか? 助けてくれてありがとう。

4

2 に答える 2

0

JSON.stringify(data)の 使用は、javascript オブジェクトを json 表現に変換することです。

success\error 関数では、別の方法に進む必要があると思います:

 success: function (data) {
                            alert("Exito " + JSON.parse(data));
                          },
 error:   function (data) {
                            alert("Error " + JSON.parse(data));
                          }

(JSON.parse、JSON.stringify を使用する場合 - プロジェクトに json2.min.js が含まれていることを確認してください)

于 2013-01-14T23:23:40.683 に答える
0

私は通常、次の構成を使用して、WCF サービスへの ajax 呼び出しを有効にします。

1) まず、Web.config で JSON エンドポイント動作を作成し、サービスをそれに関連付けます。

<system.serviceModel>
  <behaviors>
    <endpointBehaviors>
      <behavior name="WebHttpJson">
        <webHttp defaultBodyStyle="Wrapped"
                 defaultOutgoingResponseFormat="Json" />
      </behavior>
    </endpointBehaviors>
  </behaviors>
  <services>
    <service name="MyApp.LoginService">
      <endpoint address=""
                behaviorConfiguration="WebHttpJson"
                binding="webHttpBinding"
                contract="MyApp.LoginService" />
    </service>
  </services>
</system.serviceModel>

2) 次に、WCF サービスを次のように簡単に定義できます。

[ServiceContract]
public class LoginService
{
    [OperationContract]
    public void SignIn(string email, string pswd)
    {
        // Check credentials and create session cookie
    }
}

3) そして最後に、以下に示すように jQuery ajax 呼び出しを行います。

$.ajax({
    contentType: 'application/json; charset=utf-8',
    url: serviceUrl + '/SignIn',
    type: 'POST',
    data: JSON.stringify({
        email: 'john.doe@abc.com', 
        pswd: 'qwerty'
    }),
    success: function () { alert('success!'); },
    error: function () { alert('error!'); }
});
于 2013-01-14T23:40:18.153 に答える