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'作为函数调用的其余部分,没有引用引号.这种情况会抛出意外数字错误.
不确定这是否会对你有所帮助,但我在chrome中遇到了同样的错误,这是因为"0"跟踪了我的json数据:
{id: "6"}0
Run Code Online (Sandbox Code Playgroud)
0落后于JSON数据,因为我忘了添加"退出"; 在我处理AJAX调用的PHP函数中.我还建议在FireFox中运行相同的代码.FireFox很多时候比chrome有更多信息性的错误消息:
错误:SyntaxError:JSON.parse:JSON数据后出现意外的非空白字符
祝好运!