【发布时间】:2014-01-16 14:53:25
【问题描述】:
我得到以下代码
function pushJsonData(productName) {
$.ajax({
url: "/knockout/SaveProduct",
type: "POST",
contentType: "application/json",
dataType: "json",
data: " { \"Name\" : \"AA\" } ",
async: false,
success: function () {
loadJsonData();
},
error: function (jqXHR, textStatus, errorThrown) {
alert(textStatus + " in pushJsonData: " + errorThrown + " " + jqXHR);
}
});
}
请注意,我对数据值进行了硬编码。数据被很好地推入数据库。但是,我不断收到错误
解析错误语法错误意外结束输入
我确信我的数据是正确的 JSON 语法。当我在 Chrome 网络检查器上检查时,saveProduct 请求显示数据是正确的。
{ "Name": "AA" }
此 POST 请求没有响应。所以我对解析错误的来源一无所知。我尝试使用 FireFox 浏览器。同样的事情发生了。
谁能给出一些关于哪里出了问题的想法?
谢谢,
附: 这是控制器代码
namespace MvcApplJSON.Controllers
{
public class KnockoutController : Controller
{
//
// GET: /Knockout/
public ActionResult Index()
{
return View();
}
[HttpGet]
public JsonResult GetProductList()
{
var model = new List<Product>();
try
{
using (var db = new KOEntities())
{
var product = from p in db.Products orderby p.Name select p;
model = product.ToList();
}
}
catch (Exception ex)
{ throw ex; }
return Json(model, JsonRequestBehavior.AllowGet);
}
[HttpPost]
public void SaveProduct (Product product)
{
using (var db = new KOEntities())
{
db.Products.Add(new Product { Name = product.Name, DateCreated = DateTime.Now });
db.SaveChanges();
}
}
}
}
【问题讨论】:
-
" { \"Name\" : \"AA\" } "->" { 'Name' : 'AA' } "在 json 对象中"和'之间存在差异 -
是的,您的第二个示例生成无效的 JSON。单引号不是有效的 JSON!
-
@DarinDimitrov 这也适用于我所看到的(您可以在 jsonviewer.stack.hu 上尝试),但您不能将字符串作为对象发送(如果您没有该对象字符串名称可用)。所以最后:你是对的
-
这个错误出现在客户端还是服务器端?
-
您刚刚失去了 Internet 连接。就是这样。
标签: jquery ajax json asp.net-mvc-4 knockout.js