我的功能有什么问题?我想阅读我的网络服务的回复,但我收到一个错误。
浏览器消息为:
undefined- status:错误
当我按下按钮时,我只看到我的jQuery调用的错误功能,但我不知道为什么。请帮帮我。
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();
}
}
我的aspx文件,head和我的按钮代码的一部分:
<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>
答案 0 :(得分:2)
Cip位于正确的路径上 - 您需要制作响应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...
}
您的客户端JS成功函数应该访问这样的数据(您需要访问ASP.Net生成的JSON的d
属性):
function OnSuccess(data, status) {
SetMainBody(data.d); //"d" is the js object representation of the return
//value from the web method. In your case it's just
//a string, but it could be a more complex object
//or an array
}
当你通过ajax调用方法时,你也应该传入正确的参数。类似的东西:
data: "{'id':'" + companyID + "'}",
答案 1 :(得分:1)
看起来你的webservice只响应纯文本,而jQuery请求则需要JSON作为回报。
JSON是一种允许您以连贯的方式发送不同数据类型(字符串,整数,数组等)的格式。 this page上的注释18显示了人员列表的典型JSON响应。
您的回答应该类似于:
{"companyName": "Foobar Inc."}
而且,如果我没有弄错的话,你的onSuccess功能应该是这样的:
function OnSuccess(data, status) {
SetMainBody(data.companyName);
}
现在我不完全确定jQuery函数,但你的响应肯定不是JSON! : - )
答案 2 :(得分:0)
您的网络服务响应什么内容类型?对于JSON响应,它应该是application/json
。
答案 3 :(得分:-2)
就像你使用它们一样,OnError和OnSucces是需要参数的函数。也许首先尝试更简单的方法来获得更多反馈:
error: function(status, error) { alert(status + " - " + error); }