我无法从我的visual studio项目中的html页面获得一个简单的ajax示例。它可以从webform(aspx)中正常工作:
... webform1.aspx和form1.html ...
function ShowCurrentTime() {
alert("before json");
$.ajax({
type: "POST",
url: "json.aspx/GetCurrentTime",
data: "{name: bob }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function (response) {
alert(response.d);
}
});
alert("after json");
}
function OnSuccess(response) {
alert(response.d);
}
... webform1.aspx和form1.html ...
<input id="btnGetTime" type="button" value="Show Current Time"
onclick="ShowCurrentTime()" />
... json.aspx ...
[WebMethod]
public static string GetCurrentTime(string name)
{
return "Hello " + name + Environment.NewLine + "The Current Time is: "
+ DateTime.Now.ToString();
}
如果我将代码放在webform1.aspx中,它可以正常工作。如果我把它放在form1.html上,json.aspx就不会有任何回复。我使用vs2013从我的机器以调试模式运行项目。任何帮助将不胜感激。
更新#1
我检查了fiddler,服务器返回以下结果(500):
{“Message”:“无效的JSON原语:bob。”,“StackTrace”:“在System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\ r \ n at ...
答案 0 :(得分:1)
你的json格格不入。字符串需要引号。把bob
放在引号中你应该是好的。我不确定为什么它在ASP.NET页面上工作,除非它有引号。
function ShowCurrentTime() {
alert("before json");
$.ajax({
type: "POST",
url: "json.aspx/GetCurrentTime",
data: "{name: \"bob\" }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function (response) {
alert(response.d);
}
});
alert("after json");
}
function OnSuccess(response) {
alert(response.d);
}