我得到了以下代码
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浏览器。同样的事情发生了。
任何人都可以对什么地方出了错吗?
谢谢,
PS这是控制器代码
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();
}
}
}
}
我不能确定是什么问题。可能是一些不好的角色,可能是您在开始和结束时留下的空格,不知道。
无论如何,您不应该像这样做那样将JSON硬编码为字符串。相反,将JSON数据发送到服务器的正确方法是使用JSON序列化器:
data: JSON.stringify({ name : "AA" }),
现在,在服务器上,还要确保您具有正确的视图模型,期望接收此输入:
public class UserViewModel
{
public string Name { get; set; }
}
以及相应的动作:
[HttpPost]
public ActionResult SaveProduct(UserViewModel model)
{
...
}
现在还有一件事。您已指定dataType: 'json'
。这意味着您希望服务器将返回JSON结果。控制器操作必须返回JSON。如果您的控制器操作返回一个视图,则可以解释您遇到的错误。jQuery尝试解析服务器的响应时:
[HttpPost]
public ActionResult SaveProduct(UserViewModel model)
{
...
return Json(new { Foo = "bar" });
}
这就是说,在大多数情况下,通常dataType
在向ASP.NET
MVC控制器动作发出AJAX请求时,不需要设置属性。这样做的原因是因为当您返回一些特定值ActionResult
(例如a ViewResult
或a
JsonResult
)时,框架将自动设置正确的Content- Type
响应HTTP标头。然后,jQuery将使用此标头来解析响应并将其作为参数传递给已解析的成功回调。
我怀疑您在这里遇到的问题是您的服务器未返回有效的JSON。它要么返回一些ViewResult或PartialViewResult,要么您尝试在控制器操作中手动制作一些损坏的JSON(显然,您永远不应该这样做,而应使用JsonResult)。
我刚刚注意到的另一件事:
async: false,
请避免将此属性设置为false。如果将此属性设置为false
,则在整个请求执行期间将冻结客户端浏览器。在这种情况下,您可以提出正常要求。如果要使用AJAX,请开始考虑异步事件和回调。
我试图使用下面的代码从一个api网站获取一个JSON文件,但是当我使用下面的代码获取时,我得到一个错误,说“JSON输入意外结束”
问题内容: 我有一个如下所示的Web API控制器: 这是正确的语法,但是当我尝试从Angular 2的服务中调用它时,出现错误消息:“ json解析错误语法错误输入意外结束”。要解决此问题,我必须在ActionResult中输入一个值,例如 我是否缺少某些配置?我的Angular 2服务电话如下所示: 问题答案: 我猜想,当您收到一个空响应(没有有效负载)时,您无需调用该方法。在后台,XHR响应
我正在尝试在Go API服务器和基于React的前端之间发送JSON。我得到以下错误: 错误:SyntaxError:JSON输入意外结束 它说这发生在第25行,这是 这是相关的函数: 在尝试了一些故障排除之后,我将错误捕捉添加到带有“成功”和“错误”输出的函数中,这样它至少可以停止弹出错误页面,并在API服务器上添加一些控制台输出,以查看数据是否正在传递。 除了出现错误之外,一切似乎都在按预期运
我得到了的意外结束。代码对我来说很好,我错过了什么? 安慰:
第22行是: 我不知道为什么我会得到这个,我已经检查了我的语法,所有似乎是正确的。它基本上不喜欢执行查询后的任何内容 编辑: 我明白这是容易SQL注入,但我这样做只是为了测试目的。
我正在使用Flash和PHP创建一个JPG。我让Flash和PHP在本地主机服务器上按预期工作。当我上传到服务器时,出现以下错误: 分析错误:语法错误,在/home/carlosrg/public\u html/mysubdomain/image中出现意外的“:”。php在线6 以及守则: 提前感谢您的时间。