当前位置: 代码迷 >> Web Service >> c# jquery ajax 调用 webService.asmx 获取不到值?解决办法
  详细解决方案

c# jquery ajax 调用 webService.asmx 获取不到值?解决办法

热度:416   发布时间:2016-05-02 02:19:22.0
c# jquery ajax 调用 webService.asmx 获取不到值?
function program(Container) {

    $.ajax(
    {
        url: "/WebService.asmx/Program",

        type: "POST",

        dataType: "json",

        contentType: "application/json",

        cache: false,

        timeout: 5000,

        success: function(json) {
            debugger;
            alert(json.result);  // 获取不到值
       


        }
       ,

        beforeSend: function(x) {

        }
       ,
        error: function(xhr) {
            alert(xhr.responseText);
                   }
       ,
        complete: function(x) {

            $("#" + Container).append("<div id='clock_time' style='width:100px; _width:80px;font-size:14px; color:#FFF; float:left; text-align:left; margin-right:5px;'></div>");
                  }

    }
    );

}







        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        [WebMethod)]//设置EnableSession属性为true,启用Session
        public string Program()
        {  string result = "aaa";
            return "{result:\"" + result + "\"}";

        }





------解决方案--------------------
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        [WebMethod)]//设置EnableSession属性为true,启用Session
        public static  string Program()
        {  string result = "aaa";
            return "{result:\"" + result + "\"}";

        } 调试一下,看能不能进到webservice的方法中
------解决方案--------------------
static不用加吧
用"/WebService.asmx?op=Program"
这个地址访问一下,看看webservice期望的request是咋样的

还有,lz的webservice返回的是json,试试定义一个Result的类,里面包含一个result的getter-setter,然后webservice返回这个类的实例。
类似下面这样

using System.Collections.Generic;
using System.Web.Script.Services;
using System.Web.Services;

namespace JsonServiceSample
{

    public class Result
    {
        public string result { get; set; }
    }

    [WebService(Namespace = "", Description = "For Donma Test")]
    [System.ComponentModel.ToolboxItem(false)]
    [ScriptService]
    public class Service1 : WebService
    {

    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    [WebMethod]
    public Result Program()
    {
     string resultStr = "aaa";
        return (new Result { result = resultStr });

    }
    }
}

如果Webservice直接返回String的话在客户端,也就是jquery 这边应该拿到的是一个string
所以用json.result取不到值,你直接alert(json)的话应该可以看到这串字符串,类似{result:"aaa"}这样的
如果是这样的话那就用eval("("+json+")");来转一下
------解决方案--------------------
引用:
我改成用一般应用程序 调用就可以,用 Webservice 调用 就显示中止线程

不好意思,没看明白
什么东西改成一般应用程序?(Webservices改成一般应用程序?ajax改成一般应用程序?)
一般应用程序是指啥?(WinForm?WebApplication?)
显示终止线程是指啥?(ThreadAbordException?)
------解决方案--------------------
引用:
  相关解决方案