假设我有以下函数,即以jason的形式获取jsonData,我验证var jsonData以检查NaN?
function save() {
var jsonData = getEnteredValue();
$.ajax({
type : 'POST',
url : 'saveSalesForecast.json',
data : 'jsonPostData=' + jsonData,
success : function() { //alert("success");
}
});
}
我只知道如何替换NAN但不知道如何检查NAN!
jsonData = JSON.parse(jsonData.replace(/\bNaN\b/g, "null"));
这里是剩下的函数:(任何字段值都可以是字符串,数字但不应该是NAN
function getEnteredValue() {
var rowIds = $("#salesForecastGrid").jqGrid('getDataIDs');
var ids=[];
var jsonPostData = "[";
for ( var i = 0; i <= rowIds.length-1; i++) {
$("#salesForecastGrid").jqGrid('editCell', i, 2, false);
var forecastedSales = parseFloat($("#salesForecastGrid")
.jqGrid('getCell', rowIds[i], 'forecastedSales'));
if (!((forecastedSales == "") || isNaN(forecastedSales) || (forecastedSales ==0))) {
if (ids.indexOf(rowIds[i])==-1){
ids.push(rowIds[i]);
}
}
}
for ( var i = 0; i <= ids.length-1; i++) {
var forecastedSales = parseFloat($("#salesForecastGrid")
.jqGrid('getCell', ids[i], 'forecastedSales'));
var id = $("#salesForecastGrid").jqGrid('getCell', ids[i],
'id');
var date = $("#salesForecastGrid").jqGrid('getCell',
ids[i], 'day');
if (id < 0) {
id = 0;
}
var record = "{" + "id:" + id + "," + "date:" + date + ","
+ "forecastedSales:" + forecastedSales + "}";
jsonPostData = jsonPostData + record;
if (i != ids.length) {
jsonPostData = jsonPostData + ",";
}
}
jsonPostData += "]";
return jsonPostData;
}
Json Data喜欢:
"[{id:68447,date:04-17-2014,forecastedSales:8420.42},{id:68448,date:04-18-2014,forecastedSales:9912.68},]"
答案 0 :(得分:1)
您的问题是您手动创建JSON,因此最终会出现无效的JSON。帮自己一个忙,并使用JSON.stringify
:
function getEnteredValue() {
var rowIds = $("#salesForecastGrid").jqGrid('getDataIDs');
var ids=[];
var data = [];
// ...
for ( var i = 0; i < ids.length; i++) {
// ...
data.push(
{id: id, date: date, forecastedSales: forecastedSales}
);
}
return JSON.stringify(data);
}
由于NaN
不是JSON中的有效值,因此会自动转换为null
。例如:
> JSON.stringify({a: NaN});
"{"a":null}"
有关详细信息,请参阅Using native JSON。
答案 1 :(得分:0)
NaN
。 JSON规范不支持NaN
作为值。即使javascript对象具有NaN
值,当您序列化为JSON格式时,它也会转换为null
。
首先,JSON不是Javascript对象。 JSON是一种通用格式,可以被所有语言理解。