gpt4 book ai didi

.net - 在 Ajax.Beginform 的 OnComplete 事件函数中接收 JSON 数据

转载 作者:行者123 更新时间:2023-12-01 10:56:22 29 4
gpt4 key购买 nike

我正在尝试使用 Ajax.BeginForm 功能。

表单已正确发布,但我需要从我的 Controller 操作中检索 json 格式的数据,并使用操作结果消息刷新 div

我在 Stackoverflow 中找到了一些建议,但没有一个有用。

这是找到的建议:

var data = content.get_response().get_object();

But it didn't work for me .而且我相信今天已弃用,仅适用于 MVC 2 及更低版本。我当前的 MVC 版本是 3

这是一段代码:

<script type="text/javascript">
function fnCompleted(data){
if(data.Success)
$("#somediv").html(data.StatusMessage).addClass("success");
else
$("#somediv").html(data.StatusMessage).addClass("error");
}
</script>

@{
var ajaxOptions= new AjaxOptions{
OnComplete= "fnCompleted",
Url= '@Url.Action("myAction", "myController")',
Method= "POST"
}

<div id="somediv">/*Here goes the json response*/</div>

using(Ajax.BeginForm(ajaxOptions)){

@Html.EditorForModel()
<input type="submit" name="send" value="Send">

这是我的 Controller Action 的一部分:

[HttpPost]
public JsonResult myAction(MyModel mymodel)
{
try
{
if (myModel== null)
throw new Exception("The model is empty");
if (!ModelState.IsValid)
throw new Exception("The model is wrong");

var found = /*Look for existence of the model in the database*/;
if(found)
throw new Exception("Already exists the object");

/*Operation with the database*/

var result = Json(
new
{
Success = true,//success
StatusMessage = "Object created successfully"
});
return result;
}
catch (Exception exception)
{
var result = Json(
new
{
Success = false,//error
StatusMessage = exception.Message
});
return result;
}
}

最佳答案

对我们来说获得最佳解释的解释可能是:

当我们使用 OnComplete 和 JSON 时,响应会直接嵌入到页面的 DOM 中。为此,建议使用 OnSuccess 和 OnFailure。这些实际上可以完美地处理来自 Controller 操作的 JSON 结果。

我汇你们到The link that helped me, that was the same I ignored previously ,我继续阅读并找到了 Joel Purra 的回答。

在您的 Ajax.BeginForm 中:

new AjaxOptions
{
**OnFailure** = "onTestFailure",
**OnSuccess** = "onTestSuccess"
}

脚本 block :

<script>
//<![CDATA[

function onTestFailure(xhr, status, error) {

console.log("xhr", xhr);
console.log("status", status);

// TODO: make me pretty
alert(error);
}

function onTestSuccess(data, status, xhr) {

console.log("data", data);
console.log("status", status);
console.log("xhr", xhr);

// Here's where you use the JSON object
//doSomethingUseful(data);
}

关于.net - 在 Ajax.Beginform 的 OnComplete 事件函数中接收 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14968428/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com