【问题标题】:Return a value from a form POST using Razor and AJAX使用 Razor 和 AJAX 从表单 POST 返回值
【发布时间】:2014-08-06 20:31:16
【问题描述】:

我有一个简单的单字段 html 表单,我使用 AJAX 将值发布到服务器端脚本(用 Razor 编写)。表单用户必须猜测一个特定的值,并且会收到一条消息,这取决于它是否正确。

是否可以使用下面描述的方法返回消息?理想情况下,我想从我的服务器端脚本返回变量“消息”,并在前端向用户显示该值。

我的 HTML:

<form>
    <input type="text" id="value" name="value" />
    <button>Send</button>
</form>

我的 Ajax 调用:

$(document).on("click", "button", function(e){
    e.preventDefault(); 

    var dataString = "value=" + $("#value").val();

    $.ajax({
        type: "POST",
        url: "/post",
        data: dataString,
        success: function(data) {
            alert(data.returnedValue);
        }
    });         
});

我的服务器端脚本:

if(IsPost)
{
    string value = Request.Form["value"];
    string message = "";

    if(value.ToString() == "CorrectAnswer"){
        message = "Correct!";
        return message;
    }else{
        message = "Wrong!";
        return message;
    }
}

【问题讨论】:

  • 应该可以,我想说你需要用data替换data.returnedValue

标签: c# jquery .net ajax razor


【解决方案1】:

如果您的服务器页面是 Asp.net 页面 (.aspx),您可能需要使用 Response.Write

    string value = Request.Form["value"];
    string message = "";

    if(value.ToString() == "CorrectAnswer"){
        message = "Correct!";
        return message;
    }else{
        message = "Wrong!";

    }
   Response.Write(message );

另外,这不会是回发事件。所以你不需要检查。

在你的脚本中,

success: function(data) {
            alert(data);
        }

【讨论】:

  • 这可以工作,但我更不想评估魔术字符串。此外,您应该将 error: function(data) {} 添加到您的 .ajax() 调用中,以防万一出现问题。最后,为什么不使用 GET?您正在请求一条消息,并且可以在 GET 中发送数据。无论如何,响应大小几乎总是会更小。 api.jquery.com/jquery.ajax
猜你喜欢
  • 2019-05-19
  • 1970-01-01
  • 2018-05-24
  • 2020-02-03
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多