使用jquery调用IIS中托管的WCF服务

问题描述:

我已经创建了一个WCF服务并在IIS中托管。



WCF服务 -





I have created a WCF service and hosted in IIS.

WCF service--


 [ServiceContract]
 public interface IService1
 {
     [OperationContract]
     [WebInvoke(Method = "GET",ResponseFormat = WebMessageFormat.Json)]
     string GetData(int value);

     [OperationContract]
     [WebInvoke(Method ="POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
     string[] GetUser(string Id);

 }


[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
 public class Service1 : IService1
 {
     public string GetData(int value)
     {
         return string.Format("You entered: {0}", value);
     }


     public string[] GetUser(string Id)
     { return new User().GetUser(Convert.ToInt32(Id)); }
 }





WCF的Web配置 -





Web Config of WCF--

<?xml version="1.0"?>
<configuration>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="mexBehavior">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="mexBehavior" name="DemoService.Service1">
        <endpoint address="DemoSevice" binding="webHttpBinding" bindingConfiguration="" contract="DemoService.IService1"/>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8090"/>
          </baseAddresses>
        </host>
      </service>
    </services>
  </system.serviceModel>
  <system.web>
    <compilation debug="true"/>
  </system.web>
</configuration>





之后我托管了这个IIS中的服务现在我想使用J Query来使用这个服务。

J查询代码 -



after that I hosted this service in IIS and now I want to use this service using J Query.
J query code--

<script src="js/jquery-1.8.2.min.js" type="text/javascript"></script>

     <script type="text/javascript">

         var Type;
         var Url;
         var Data;
         var ContentType;
         var DataType;
         var ProcessData;
         //Generic function to call AXMX/WCF  Service        
         function CallService() {
             debugger;
             $.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
                 dataFilter: function (data) { return data; },
                 success: function (msg) {
                     debugger;
                     var jsonData = jQuery.parseJSON(msg);
                     ServiceSucceeded(jsonData);
                 },

                 error: ServiceFailed// When Service call fails
             });
         }

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

         function WCFJSON() {
             var uesrid = "1";
             Type = "POST";
             Url = "http://localhost:8090/DemoService/Service1.svc/GetUser";
             Data = '{"Id": "' + uesrid + '"}';
             ContentType = "application/json; charset=utf-8";
             DataType = "json";
             ProcessData = true;
             CallService();
         }

         function ServiceSucceeded(result) {

             if (DataType == "json") {

                 resultObject = result.GetUserResult;

                 for (i = 0; i < resultObject.length; i++) {
                     alert(resultObject[i]);
                 }

             }

         }

         function ServiceFailed(xhr) {
             alert(xhr.responseText);
             if (xhr.responseText) {
                 var err = xhr.responseText;
                 if (err)
                     error(err);
                 else
                     error({ Message: "Unknown server error." })
             }
             return;
         }

         $(document).ready(
         function () {
             WCFJSON();
         }
         );

    </script>





但是这个j查询块在我的结尾不起作用。我在哪里做错了?任何想法将不胜感激。



But this block of j query is not working in my end. Where I am doing mistake?. Any idea will be appreciated.

.ajax({
type:Type, // GET或POST或PUT或DELETE动词
url:Url, // 服务的位置
数据:数据, // 数据发送到服务器
contentType:ContentType, // 发送到服务器的内容类型
dataType:DataType, // 来自服务器的预期数据格式
processdata:ProcessData , // 对错
dataFilter:功能(数据){返回数据; },
成功: function (msg){
debugger ;
var jsonData = jQuery.parseJSON(msg);
ServiceSucceeded(jsonData);
},

错误:ServiceFailed // 服务调用失败时
});
}

function ServiceFailed(result){
alert('' 服务调用失败:' + result.status + ' ' + result.statusText);
Type = null ; Url = null ;数据= null ; ContentType = null ; DataType = null ; ProcessData = null ;
}

function WCFJSON(){
var uesrid = 1;
Type = POST;
Url = http:// localhost:8090 / DemoService / Service1.svc / GetUser;
数据= ' {Id:' + uesrid + ' }';
ContentType = application / json; charset = utf-8;
DataType = json;
ProcessData = true ;
CallService();
}

function ServiceSucceeded(result){

if (DataType == json){

resultObject = result.GetUserResult;

for (i = 0 ; i< resultObject.length; i ++ ){
alert(resultObject [i]);
}

}

}

功能 ServiceFailed(xhr) {
alert(xhr.responseText);
if (xhr.responseText){
var err = xhr.responseText;
if (错误)
error(err);
else
error({Message: 未知的服务器错误。})
}
return ;
}
.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 dataFilter: function (data) { return data; }, success: function (msg) { debugger; var jsonData = jQuery.parseJSON(msg); ServiceSucceeded(jsonData); }, error: ServiceFailed// When Service call fails }); } function ServiceFailed(result) { alert('Service call failed: ' + result.status + '' + result.statusText); Type = null; Url = null; Data = null; ContentType = null; DataType = null; ProcessData = null; } function WCFJSON() { var uesrid = "1"; Type = "POST"; Url = "http://localhost:8090/DemoService/Service1.svc/GetUser"; Data = '{"Id": "' + uesrid + '"}'; ContentType = "application/json; charset=utf-8"; DataType = "json"; ProcessData = true; CallService(); } function ServiceSucceeded(result) { if (DataType == "json") { resultObject = result.GetUserResult; for (i = 0; i < resultObject.length; i++) { alert(resultObject[i]); } } } function ServiceFailed(xhr) { alert(xhr.responseText); if (xhr.responseText) { var err = xhr.responseText; if (err) error(err); else error({ Message: "Unknown server error." }) } return; }


document )。ready(
function (){
WCFJSON();
}
);

< / script>
(document).ready( function () { WCFJSON(); } ); </script>





但是这个j查询块在我的结尾不起作用。我在哪里做错了?任何想法都将不胜感激。



But this block of j query is not working in my end. Where I am doing mistake?. Any idea will be appreciated.