jQuery AJAX函数 - Chrome抛出"Uncaught SyntaxError:Unexpected number"

sxt*_*son 7 javascript asp.net jquery jsonp

我在屏幕上有许多可点击的对象,它们代表通过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;
Run Code Online (Sandbox Code Playgroud)

这适用于某些对象,但不适用于其他对象,抛出"Uncaught SyntaxError:Unexpected number"异常.

我用来调用这个特定函数的JS是:

S8Web.Requestmanager.makeRequest({ data: { command: "myClick", id: aItem.id }, async: true, callback: function(data){
                        alert(data.CountInRoutes); //Do a vardump of the response
                        }});
Run Code Online (Sandbox Code Playgroud)

还有几个响应,第一个响应正常,而第二个响应意外数字异常:

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});
Run Code Online (Sandbox Code Playgroud)

我能看到的唯一可能影响结果的是"Process"和"1"之间的空格.是什么引发了这个错误?

小智 13

您可能只是因为报价不正确而引发问题.

例:

<a href='#' onclick="doStuff('joe, '2844')">click here</a>
Run Code Online (Sandbox Code Playgroud)

由于第一个参数未正确关闭,因此它被解释为"joe".这留下2844'作为函数调用的其余部分,没有引用引号.这种情况会抛出意外数字错误.


raf*_*afi 5

不确定这是否会对你有所帮助,但我在chrome中遇到了同样的错误,这是因为"0"跟踪了我的json数据:

{id: "6"}0
Run Code Online (Sandbox Code Playgroud)

0落后于JSON数据,因为我忘了添加"退出"; 在我处理AJAX调用的PHP函数中.我还建议在FireFox中运行相同的代码.FireFox很多时候比chrome有更多信息性的错误消息:

错误:SyntaxError:JSON.parse:JSON数据后出现意外的非空白字符

祝好运!