簡體   English   中英

jQuery AJAX函數 - Chrome拋出“Uncaught SyntaxError:Unexpected number”

[英]jQuery AJAX function - Chrome throwing “Uncaught SyntaxError: Unexpected number”

我在屏幕上有許多可點擊的對象,它們代表通過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;

這適用於某些對象,但不適用於其他對象,拋出“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
                        }});

還有幾個響應,第一個響應正常,而第二個響應意外數字異常:

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});

我能看到的唯一可能影響結果的是“Process”和“1”之間的空格。 是什么引發了這個錯誤?

您可能只是因為報價不正確而引發問題。

例:

<a href='#' onclick="doStuff('joe, '2844')">click here</a>

由於第一個參數未正確關閉,因此它被解釋為“joe” 這留下2844'作為函數調用的其余部分,沒有引用引號。 這種情況會拋出意外數字錯誤。

不確定這是否會對你有所幫助,但我在chrome中遇到了同樣的錯誤,這是因為“0”跟蹤了我的json數據:

{id: "6"}0

0落后於JSON數據,因為我忘了添加“退出”; 在我處理AJAX調用的PHP函數中。 我還建議在FireFox中運行相同的代碼。 FireFox很多時候比chrome有更多信息性的錯誤消息:

錯誤:SyntaxError:JSON.parse:JSON數據后出現意外的非空白字符

祝好運!

在我的if語句中也有一個“0”導致意外的語法:Chrome中的意外數字,比較是:

if (bcn.length==0 && ecn.length==0 0 && corr.length==0)

額外的0,看到了嗎? 我沒看到前幾眼。

不確定錯誤的原因,但考慮讓序列化器執行工作而不是手動編碼。 可能有助於在瀏覽器中處理不同的解釋。

在這個例子中,我有一個字符串屬性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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM