jQuery Ajax 调用适用于本地主机,但不适用于实时服务器
jquery ajax call works on localhost, but not on live server
我研究了一整天这个问题,这似乎是一个有点普遍的问题,但我无法找到解决方案。
我正在使用jquery的$.ajax()
函数进行服务调用,以更新数据库中的某些值。 它在本地主机上运行良好,但在实际服务器上,我在控制台窗口中收到 500 内部服务器错误。
我的客户端代码如下:
var param = FunctionToMakeKeyValueString();
$.ajax({
type: "POST",
url: "../Helpers/Autocomplete.asmx/OrderStatements",
data: { param: param },
clientType: "application/json; charset=utf-8",
datatype: "json",
async: true,
success: function () { ShowSuccess();},
error: function () { ShowError(); }
});
服务器端代码是:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class AutoComplete : System.Web.Services.WebService {
public AutoComplete () {
//Uncomment the following line if using designed components
//InitializeComponent();
}
[WebMethod]
public void OrderStatements(string param)
{
IncomeStatementService service = new IncomeStatementService();
string[] comps = param.Split(';');
foreach (string s in comps)
{
int id;
short order;
string[] pieces = s.Split(':');
if (int.TryParse(pieces[0], out id) && short.TryParse(pieces[1], out order))
{
IncomeStatement statement = service.FindBy(id);
statement.Order = order;
service.UpdateOrder(statement);
}
}
}
}
实际的 ASMX 文件只是
<%@ WebService Language="C#" CodeBehind="~/App_Code/AutoComplete.cs" Class="AutoComplete" %>
我确定 url 是正确的(.js文件位于包含 asmx 的助手的同级文件夹中),但我还需要在 IIS 或 web.config 文件中设置其他内容吗? 谢谢!
@Mike W 的评论让我稍微查看了一下服务器错误日志,我发现:
Exception type: InvalidOperationException
Exception message: Request format is unrecognized for URL unexpectedly ending in '/OrderStatements'.
我用谷歌搜索了那条消息,让我回答这个堆栈溢出问题看起来就像将其添加到我的配置文件的 systen.web 部分一样简单:
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
你能尝试将以下行添加到你的web.config httpHandlers中吗?
<system.web>
<httpHandlers>
<add verb="*" path="*.asmx" type="System.Web.Services.Protocols.WebServiceHandlerFactory, System.Web.Services" />
</httpHandlers>
</system.web>
您在 JavaScript/Jquery 中提供的主机链接可能存在问题
请记下 如果您在chrome上查看此内容,请清除浏览器数据,您将在两端看到相同的结果
相关文章:
- HTML5 Canvas toDataURL(“image/png”)适用于一些绘画,而有些则不然,不确定原因
- JavaScript不显示剩余字符,但适用于其他页面
- 我如何完善这个Javascript代码,使其只适用于来自图像的链接(而不是来自文本的链接)
- 为什么这只适用于身体部分而不是头部
- 为什么不't此正则表达式适用于重复出现的对
- document.getElementById 对内部 html 的调用适用于 $_POST 和 $_GET 变量,但不
- JavaScript 位置适用于本地主机而不是服务器
- Rally App SDK 2.0:Rallymultiobjectpicker,适用于不显示displayField的
- jQuery事件在Mozilla上不起作用,并且适用于其他浏览器
- Angular.js - 控制器不为索引执行,适用于其余模板
- D3 .on 更改适用于文本而不是图表
- Zillow 数据 - json_encode不起作用 - 适用于常规变量
- 弹出模式仅适用于表格中的第一个元素,第二次单击后不会再次打开
- Phonegap Android项目适用于模拟器,而不是实际的手机
- ajax jonp 不应该适用于 请求的上不存在“访问控制-允许源”标头
- AngularJS:ng-单击不起作用,适用于<按钮>
- Javascript不会在移动设备上加载.适用于桌面
- 为什么我的代码适用于高度:100px,而不是高度:100%
- 拖放区.js + Laravel-多文件上传不起作用(仅适用于一个文件)
- 哪些限制适用于不透明响应