ajax调用返回值和我的html页面

时间:2017-08-18 09:38:36

标签: javascript c# jquery html ajax

我目前正在使用以下代码对我的控制器执行ajax调用:

$.ajax({
    type: "POST",
    url: "@Url.Action("uploadImage", "Item")",
    data: '{ "imageData" : "' + image + '" }',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (success) {
        alert('Success ' + success.responseText);
    },
    error: function (response) {
        alert(response.responseText);
    }
});

这是控制器:

[HttpPost]
public ActionResult uploadImage(string imageData)
{
    string imageName = Guid.NewGuid().ToString();

    try
    {
        ProductManager pm = new ProductManager();
        pm.AddNewProduct(imageName);
    }catch(Exception e)
    {
        writeToLog(e);
    }
    return Json(new { success = imageName }, JsonRequestBehavior.AllowGet);
}

它到达控制器并且AddNewProduct函数成功运行。问题是我希望它返回在控制器中创建的图像名称。这也可以,但是它也会返回我完整的html页面。 我在成功时发出警告,并在发生错误时发生错误,但不知怎的,它总是以错误结束并发出以下警告:

enter image description here

它显示了我需要的值,但为什么它也会返回我的完整HTML?

1 个答案:

答案 0 :(得分:3)

  • 您不需要JsonRequestBehavior.AllowGet。这必须仅用于GET请求,以保护您免受涉及 JSON 请求的特定攻击。在您的代码中,您使用的是POST动词。

  • 您应该使用以下代码来获取从服务器收到的success字符串。

    success: function (response) { alert('Success ' + response.success); }