Javascript jQuery AJAX函数-Chrome抛出;未捕获的合成错误:意外数字“;

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() +

我在屏幕上有许多可点击的对象,它们表示通过COM组件连接的软件中的对象

单击某个对象时,我会发送该对象的名称、会话ID和要运行的命令

我试图实现的特定命令的代码是一个基于C#的ASP.NET页面:

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
问题!