Javascript jQuery AJAX函数-Chrome抛出;未捕获的合成错误:意外数字“;
我在屏幕上有许多可点击的对象,它们表示通过COM组件连接的软件中的对象 单击某个对象时,我会发送该对象的名称、会话ID和要运行的命令 我试图实现的特定命令的代码是一个基于C#的ASP.NET页面:Javascript jQuery AJAX函数-Chrome抛出;未捕获的合成错误:意外数字“;,javascript,jquery,asp.net,jsonp,Javascript,Jquery,Asp.net,Jsonp,我在屏幕上有许多可点击的对象,它们表示通过COM组件连接的软件中的对象 单击某个对象时,我会发送该对象的名称、会话ID和要运行的命令 我试图实现的特定命令的代码是一个基于C#的ASP.NET页面: case "myClick": dynamic simObj = S8COM.get_SimObject(Request["id"]); responseData = "{name:" + simObj.Name.ToString() +
case "myClick":
dynamic simObj = S8COM.get_SimObject(Request["id"]);
responseData = "{name:" + simObj.Name.ToString() + ",countInRoutes:" + simObj.CountInRoutes.ToString() + ",countOutRoutes:" + simObj.CountOutRoutes.ToString() + ",index:" + simObj.Index.ToString() + ",capacity:" + simObj.Capacity.ToString() + ",completed:" + simObj.Completed.ToString() + ",routeOutMethod:" + simObj.RouteOutMethod.ToString() + "}";
break;
这适用于某些对象,但不适用于其他对象,引发“未捕获的SyntaxError:意外数字”异常
我用来调用此特定函数的JS是:
S8Web.Requestmanager.makeRequest({ data: { command: "myClick", id: aItem.id }, async: true, callback: function(data){
alert(data.CountInRoutes); //Do a vardump of the response
}});
还有两个响应,第一个可以正常工作,而第二个抛出意外的数字异常:
jsonp1319203225074({name:Start,countInRoutes:0,countOutRoutes:1,index:5,capacity:0,completed:0,routeOutMethod:4});
jsonp1319203225066({name:Process 1,countInRoutes:1,countOutRoutes:1,index:1,capacity:1,completed:0,routeOutMethod:1});
我能看到的唯一可能影响结果的是“进程”和“1”之间的空白。是什么造成了这个错误?不确定错误的原因,但是考虑让序列化程序来代替手工编码。可能有助于在浏览器中处理不同的解释 在本例中,我有一个具有字符串属性param1+param2的结构。您也可以轻松地序列化这些列表 只需构造一个具有所需属性的简单结构
var jss = new JavaScriptSerializer();
var jsonApp = new StringBuilder();
MyStruct item = new MyStruct();
item.param1 ="111";
item.param2 ="222";
jss.Serialize(item, jsonApp);
Response.Clear();
Response.Headers.Add("Content-type", "application/json");
var resp = HttpContext.Current.Request["callback"] + "(" + jsonApp.ToString() + ")";
Response.Write(resp);
Response.End();
不确定这是否对您有帮助,但我在chrome中遇到了相同的错误,这是因为一个“0”跟踪了我的json数据:
{id: "6"}0
0跟踪JSON数据,因为我忘记在处理AJAX调用的PHP函数中添加“exit;”。我还建议在FireFox中运行相同的代码。FireFox很多时候都比chrome有更多的信息性错误消息:
错误:SyntaxError:JSON.parse:JSON数据后出现意外的非空白字符
祝你好运 我的if语句中也有一个“0”导致意外语法:Chrome中的意外数字,比较为:
if(bcn.length==0&&ecn.length==0&&corr.length==0)
额外的0,看到了吗?头几眼我没看懂。你很可能只是因为报价不正确而有问题 例如:
<a href='#' onclick="doStuff('joe, '2844')">click here</a>
因为第一个参数没有正确关闭,所以它被解释为“joe”。这就剩下2844'作为函数调用的其余部分,没有前导引号。这种情况将引发意外的数字错误。是否只有在chrome浏览器中才会引发此错误?是的。。。因为它是一个字符串,所以需要用引号将其括起来<代码>名称:“流程1”谢谢!我在PHP函数的末尾添加了
die()
,解决了SyntaxError:unexpected number
问题!