C# 使用jquery阅读Web服务时出现问题?

C# 使用jquery阅读Web服务时出现问题?,c#,javascript,jquery,C#,Javascript,Jquery,我的函数有什么问题?我想从我的Web服务读取响应,但我刚刚收到一个错误 浏览器消息为: 未定义-状态:错误 当我按下按钮时,我只看到jQuery调用的error函数,但我不知道为什么。请帮帮我 function SetupCompanyInfo(companyID) { //alert('aaa'); companyID = '1'; $.ajax({ type: "POST", url: '../../../Services/Compan

我的函数有什么问题?我想从我的Web服务读取响应,但我刚刚收到一个错误

浏览器消息为:

未定义-状态:错误

当我按下按钮时,我只看到jQuery调用的error函数,但我不知道为什么。请帮帮我

function SetupCompanyInfo(companyID) {
    //alert('aaa');
    companyID = '1';
    $.ajax({
        type: "POST",
        url: '../../../Services/CompanyServices.asmx/GetCompanyInfo',
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: OnSuccess,
        error: OnError
    });

}
function OnSuccess(data, status) {
    SetMainBody(data);
}
function OnError(request, status, error) {
    SetMainBody(error + '- ' + request + ' status:' + status);
}
我的网络服务:

using System;
using System.Web.Services;
using System.Web.Script.Services;


/// <summary>
/// Summary description for CompanyServices
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]

//[System.ComponentModel.ToolboxItem(false)]

public class CompanyServices : System.Web.Services.WebService {

    [WebMethod]
    public string GetCompanyInfo()
    {
        string response = "aaa";
        Console.WriteLine("here"); 
        return response.ToString();
    }

    [WebMethod]
    public string GetCompanyInfo(string id)
    {
        string response = "aaa";
        Console.WriteLine("here2"+id);
        return response.ToString();
    }

}
使用系统;
使用System.Web.Services;
使用System.Web.Script.Services;
/// 
///公司服务的摘要说明
/// 
[WebService(命名空间=”http://tempuri.org/")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
[脚本服务]
//[System.ComponentModel.ToolboxItem(false)]
公共类公司服务:System.Web.Services.WebService{
[网络方法]
公共字符串GetCompanyInfo()
{
字符串响应=“aaa”;
Console.WriteLine(“此处”);
返回response.ToString();
}
[网络方法]
公共字符串GetCompanyInfo(字符串id)
{
字符串响应=“aaa”;
控制台写入线(“此处2”+id);
返回response.ToString();
}
}
我的aspx文件、头部的一部分和我的按钮代码:

<script src="../../Scripts/InnerFunctions.js" type="text/javascript"></script>

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

<script src="../../Scripts/TabMenu.js" type="text/javascript"></script>

<script src="Scripts/InternalFunctions.js" type="text/javascript"></script>
     <div dir="rtl" style="border: 1px solid #CCCCCC">
                   <asp:Image ID="Image1" runat="server" ImageUrl="../../generalImg/Icons/64X64/settings_Icon_64.gif" 
                       style="width: 27px; height: 26px" onclick="SetupCompanyInfo(1)" /></div>

就像使用它们一样,OnError和OnSucces是需要参数的函数。或许可以先尝试一些简单的方法来获得更多反馈:

error: function(status, error) { alert(status + " - " + error); }

您的Web服务响应的内容类型是什么?json响应应该是
application/json

您的Web服务似乎只使用纯文本响应,而jQuery请求需要json作为返回

JSON是一种允许以一致的方式发送不同数据类型(字符串、整数、数组等)的格式。上的注释18显示了个人列表的典型JSON响应

您的回答应该如下所示:

{"companyName": "Foobar Inc."}
data: "{'id':'" + companyID + "'}", 
如果我没有弄错的话,您的onSuccess函数应该是这样的:

function OnSuccess(data, status) {
SetMainBody(data.companyName);
}
现在我不完全确定jQuery函数,但您的响应肯定不是JSON!:-)

在正确的路径上-您需要生成JSON响应,然后在客户端正确访问JSON。您的ASMX方法应如下所示:

[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)] // <--- To make it JSON
public string GetCompanyInfo(string id)     
{         
    Console.WriteLine("here2"+id);         
    return "aaa"; //never call "ToString()" on a string...
} 
当您通过ajax调用该方法时,还应该传入正确的参数。比如:

{"companyName": "Foobar Inc."}
data: "{'id':'" + companyID + "'}", 

您输入的url是否对浏览器可见?如果不是的话,那可能就是问题所在我用命令提示符尝试我的地址。。。我是对的!尝试检查ajax函数是否能够连接到WebDevice(asmx)。通过“Fiddler2”,ajax url不清楚。。尝试编写以“http://”开头的完整url AFAIK,web服务的默认响应类型是XML,尽管您的其余答案是spot-on。但是他的jQuery AJAX调用需要JSON:contentType:“application/JSON;charset=utf-8”,数据类型:“JSON”,呸,无法正确设置此评论的格式..Cip您能告诉我是否需要自定义我的URL?是否需要将我的Web服务功能放在Web服务的末尾?请帮助我,我正在尝试调试它,是否需要更改URL?我的意思是我不需要在我的URL末尾添加我的函数名?@rima,“”URL看起来是正确的。您的函数需要一个参数,因此您的
数据:“{}”
需要更改为类似
数据:“{'id':'test'}”
@rima,对不起,我粘贴了错误的URL-您上面的URL是正确的
http://www.hiradsign.com/Services/CompanyServices.asmx/GetCompanyInfo
@rima,它有一个学习曲线,但一旦你掌握了基本知识,它会更好:)你肯定不需要在查询字符串中传递任何参数(例如,
?id=something&test=name
不是必需的)。@rima尝试将成功函数更改为
警报(data.d)只是为了验证您是否获得了响应中预期的数据。如果是这样,那么问题在于
SetMainBody
函数。