ОШИБКА: ошибка времени выполнения Microsoft JScript: объект не поддерживает это свойство или метод
вот как звонит json2:
**var json = JSON2.stringify(settings.data);**
Я использую службу WCF для извлечения данных, и она очень проста для целей тестирования, и она возвращает мне данные из службы wcf, но происходит сбой на json2.js номер строки 314-316
// We split the first stage into 4 regexp operations in order to work around
// crippling inefficiencies in IE's and Safari's regexp engines. First we
// replace all backslash pairs with '@' (a non-JSON character). Second, we
// replace all simple value tokens with ']' characters. Third, we delete all
// open brackets that follow a colon or comma or that begin the text. Finally,
// we look to see that the remaining characters are only whitespace or ']' or
// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
if (/^[\],:{}\s]*$/.test(text.replace(/\\["\\\/bfnrtu]/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
вот что я делаю
// *** Generic Service Proxy class that can be used to
// *** call JSON Services generically using jQuery
// *** Depends on JSON2 modified for MS Ajax usage
function serviceProxy(wjOrderServiceURL) {
var _I = this;
this.ServiceURL = wjOrderServiceURL;
// *** Call a wrapped object
this.invoke = function (options) {
// Default settings
var settings = {
serviceMethod: '',
data: null,
callback: null,
error: null,
type: "POST",
processData: false,
contentType: "application/json",
dataType: "text",
bare: false
};
if (options) {
$.extend(settings, options);
}
// *** Convert input data into JSON - REQUIRES Json2.js
var json = JSON2.stringify(settings.data);
// *** The service endpoint URL
var url = _I.ServiceURL + settings.serviceMethod;
debugger
$.ajax({
url: url,
data: json,
type: settings.type,
processData: settings.processData,
contentType: settings.contentType,
timeout: settings.timeout,
error: settings.error,
dataType: settings.dataType,
success:
function (res) {
if (!settings.callback) { return; }
// *** Use json library so we can fix up MS AJAX dates
var result = JSON2.parse(res);
debugger
if (result.ExceptionDetail) {
OnPageError(result.Message);
return;
}
// *** Bare message IS result
if (settings.bare)
{ settings.callback(result); return; }
//http://encosia.com/2009/07/21/simplify-calling-asp-net-ajax-services-from-jquery/
if (result.hasOwnProperty('d'))
{ return settings.callback(result.d); }
else
{ return result; }
// *** Wrapped message contains top level object node
// *** strip it off
// for (var property in result) {
// settings.callback(result[property]);
// break;
// }
}
});
};
}
function GetFederalHolidays() {
$("#dContacts1").empty().html('Searching for Active Contacts...');
ContactServiceProxy.invoke({ serviceMethod: "Holidays",
callback: function (response) {
// ProcessActiveContacts1(response);
debugger
},
error: function (xhr, errorMsg, thrown) {
postErrorAndUnBlockUI(xhr, errorMsg, thrown);
}
});
}
ОК возвращает мне простую строку
public List<string> Holidays()
{
List<string> s = new List<string>();
s.Add("01/01/2010");
s.Add("02/01/2010");
s.Add("03/01/2010");
s.Add("04/01/2010");
s.Add("05/01/2010");
return s;
}
любая помощь, что я делаю неправильно? я пытаюсь перейти от dataType: text к json, но я получаю ту же ошибку выше.