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

Nie*_*ren 5 html javascript c# ajax jquery

我目前正在使用以下代码对我的控制器执行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);
    }
});
Run Code Online (Sandbox Code Playgroud)

这是控制器:

[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);
}
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

Mih*_*nut 3

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

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

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