我在使用json數據時遇到問題。我創建了2個例子。一個工作,但另一個不工作。並猜測我需要哪一個?是的,那個不起作用。這是代碼。javascript json問題
我有一個web服務,輸出json數據,但由於某種原因它添加了額外的括號[]到字符串,它也缺少單引號''。如果您查看不起作用的代碼,您會看到我手動刪除了括號並添加了單引號。我有一個div,我寫了字符串,它是有效的Json數據。如果我接受該字符串並手動聲明一個新的變量,jQuery.parseJSON工作正常。但它解析新創建的對象,它不起作用。任何人有任何想法?
工作正常
$.ajax({
type: "POST",
async: false,
contentType: "application/json; charset=utf-8",
url: "StudiesWebService.asmx/EventList",
data: "{}",
dataType: "json",
success: function(msg) {
var obj = jQuery.parseJSON('{ "id": 1, "title": "Jack STuff", "start": "\/Date(1318939200000)\/", "end": "\/Date(1318950000000)\/", "allDay": false }, { "id": 2, "title": "asdfasdfasdf", "start": "\/Date(1319025600000)\/", "end": "\/Date(1319025600000)\/", "allDay": false}');
var events2 = [];
events2.push({
title: obj.title,
allDay: obj.allDay,
start: 'Tue, 18 Oct 2011 10:00:00 EST',
end: 'Tue, 18 Oct 2011 11:00:00 EST'
});
callback(events2);
},
error: function(e) { $(".external-events").html("An Error Occured" + e); }
});
不起作用:
$.ajax({
type: "POST",
async: false,
contentType: "application/json; charset=utf-8",
url: "StudiesWebService.asmx/EventList",
data: "{}",
dataType: "json",
success: function(msg) {
var myObj = new String(msg.d);
myObj = myObj.replace("[", "");
myObj = myObj.replace("]", "");
myObj = "'" + myObj + "'";
//at this point myObj output to this:
//'{"id":1,"title":"Mike STuff","start":"\/Date(1318939200000)\/","end":"\/Date(1318950000000)\/","allDay":false},{"id":2,"title":"asdfasdfasdf","start":"\/Date(1319025600000)\/","end":"\/Date(1319025600000)\/","allDay":false}'
var obj1 = jQuery.parseJSON(myObj);
alert(obj1.id); //alert doesn't come up
var events = [];
events.push({
title: obj1.title,
allDay: obj1.allDay,
start: 'Tue, 18 Oct 2011 10:00:00 EST',
end: 'Tue, 18 Oct 2011 11:00:00 EST'
});
callback(events);
},
error: function(e) { $(".external-events").html("An Error Occured" + e); }
});
+1對於Jason :) – yoda
謝謝大家的幫助。你不僅解決了這個錯誤,而且解決了我在代碼中遇到的其他問題。我剛剛開始使用javascript和jquery工作,而且我的時間很艱難。來自vb.net環境並學習c#和jQuery正在踢我的背後。 – MikeB55
你是否控制了吐出壞json的web服務?如果你這樣做,爲什麼不解決這個問題,而不是在這裏補償? –