2014-03-28 60 views
0

我怀疑我们是否可以通过PARAMS这里使用Ajax调用数据,以支持AJAX的WCF服务是我的脚本代码支持AJAX的WCF与AJAX调用

$(document).ready(function() { 
      $("#SendSms").click(function() { 
       var data = 'Muthu'; 
       var text = JSON.stringify({ data: data }); 
       debugger; 
       //data += '[0].Name=FromDate&[0].Value=' + 'Muthu'; 
       //data += '&[1].Name=ToDate&[1].Value=' + 'Kumar'; 
       //data += '&[2].Name=CustomerID&[2].Value=' + 'Ajit'; 
       //data += '&[3].Name=Status&[3].Value=' + 'Arun'; 
       $.ajax({ 
        type: 'GET', 
        url: '*********/AjaxService.svc/DoWork', 
        dataType: "json", 
        data: text, 
        success: function (text) { 
         debugger; 
         $('#Panel').show(); 
         $('#Panel').html(text.d); 
        }, 
        error: function (jqXHR, textStatus, errorThrown) { alert(errorThrown); } 
       }); 
      }); 
     }); 

我的服务代码

[OperationContract] 
     //[WebInvoke (Method="POST")] 
      [WebGet] 
     public string DoWork(string text) 
     { 
      // Add your operation implementation here 
      //return Get.Select(o => new ClientIssueEntry { FormName=o,Description=o+1}); 
      return text; 
     } 

PLS帮我用这个..

+0

如果我们发送param作为查询字符串,它的工作正常.. – user3471565

+0

var text = JSON.stringify(data); – Rex

+0

文本没有传递给服务对象(字符串文本)这就是问题 – user3471565

回答

0

json变量匹配名称(data)与C#方法参数名称;所以,无论是在C#结束

+0

现在我有很大的困惑,我们可以通过参数传递给WCF服务,因为数据的意思是无论如何,除了查询字符串之外,还要传递参数。 – user3471565

+0

如果你通过名为data的JSON参数,你需要重命名C#方法参数名为'data'类似'public string DoWork(string data){...}' – rt2800

0
$(document).ready(function() { 
      $("#SendSms").click(function() { 
       var data = 'Muthu'; 
       var text = JSON.stringify({ text: data }); 
       $.ajax({ 
        type: 'GET', 
        url: '*********/AjaxService.svc/DoWork', 
        dataType: "json", 
        contentType: "application/json; charset=utf-8", 
        data: text, 
        success: function (text) { 
         debugger; 
         $('#Panel').show(); 
         $('#Panel').html(text.d); 
        }, 
        error: function (jqXHR, textStatus, errorThrown) { alert(errorThrown); } 
       }); 
      }); 
     }); 

     [OperationContract] 
     [WebGet] 
     public string DoWork(string text) 
     { 
      // Add your operation implementation here 
      //return Get.Select(o => new ClientIssueEntry { FormName=o,Description=o+1}); 
      return text; 
     } 
+0

si改变了,但仍然是公共字符串DoWork(字符串文本)文本值只能为空。 – user3471565

0

改变datatext在JS年底或textdata如果您正在执行一个GET操作,这也只有一个或两个非复杂的参数,我会建议使用UriTemplate。下面是一个示例基于您的代码: -

接口: -

[ServiceContract] 
public interface IAjaxService 
{ 
    [OperationContract] 
    [WebGet(UriTemplate = "DoWork?text={text}", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)] 
    public string DoWork(string text); 
} 

的实施

AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
    public class IAjaxService : AjaxService 
    { 
     public string DoWork(string text) 
     { 
      // Do your work here..... 
      return text; 
     } 
    } 

而且从你的JavaScript像这样调用这个: -

$(document).ready(function() { 
      $("#SendSms").click(function() { 
       var input = 'Muthu'; 
       $.ajax({ 
        type: 'GET', 
        url: "*********/AjaxService.svc/DoWork?text="+input, 
        dataType: "json", 
        success: function (responseData) { 
         //Do your work here .... 
        }, 
        error: function (err1, err2, err3) { alert(err3); } 
       }); 
      }); 
     }); 

这一定会对你有用。如果您需要帮助,请发帖。