Возвращение ContentResult для Ajax Response имеет дополнительные теги в контроллере .NET MVC - PullRequest
0 голосов
/ 05 ноября 2010

У меня есть действие контроллера, которое пытается вернуть простой текст в вызов AJAX. Например .-

[HttpPost]
public ActionResult SubmitAttachment(int id, HttpPostedFileBase theFile){
...
...
   return Content("Success");
}

В моей функции javascript, которая выполняет вызов ajax, я ожидаю, что текст ответа будет просто «Успех», но вместо этого я получаю "<head></head><body>Success</body>".

В 99% других моих действий контроллера у меня нет этой проблемы. Единственное, что я могу придумать, это делает это по-другому, потому что AJAX-вызов «SubmitAttachment» является формой POST с «enctype = multipart / form-data», где другие AJAX-вызовы не загружают никаких файлов.

Кто-нибудь сталкивался с этим раньше? Если это так ... как бы мне просто вернуть текст?

ПРИМЕЧАНИЕ. Я также пробовал return Content("Success", "text/plain"), но он добавляет дополнительные теги вокруг строки "Success".

Ответы [ 2 ]

2 голосов
/ 06 ноября 2010

Невозможно воспроизвести поведение:

Контроллер:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(int id, HttpPostedFileBase theFile)
    {
        return Content("Success", "text/plain");
    }
}

Вид:

<script type="text/javascript" src="<%: Url.Content("~/scripts/jquery-1.4.1.js") %>"></script>
<script type="text/javascript">
    $(function () {
        $('form').submit(function () {
            $.ajax({
                url: this.action,
                type: this.method,
                data: $(this).serialize(),
                success: function (result) {
                    alert(result);
                }
            });
            return false;
        });
    });
</script>

<form action="/" method="post" enctype="multipart/form-data">
    <input type="text" name="id" value="4" />
    <input type="submit" value="OK" />
</form>

Когда форма отправлена, сервер возвращает только "Success".

1 голос
/ 06 ноября 2010

Я бы сделал то, что предложил bzlm, используя fiddler, чтобы убедиться, что эти теги действительно возвращаются таким образом. Если они все еще есть, попробуйте вернуть простую строку. Установите тип возвращаемого значения в строку, а затем верните «success» без Content (). Если вы по-прежнему получаете метки вокруг нее при возврате строки, то вы попадаете в альтернативную реальность, где невозможные вещи как-то возможны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...