1

好的,我对 .NET MVC3 完全陌生,但遇到了问题。

我正在使用 Jquery mobile 开发一个移动应用程序,我希望将数据从移动应用程序发送到网页。在服务器上我有这个:

    [HttpPost]
    [ValidateInput(true)]
    public ActionResult Save(FormCollection actionValues) {
        int age = Int32.Parse(actionValues["age"]);
        string fn = actionValues["first_name"];
        string ln = actionValues["last_name"];
        CreateAndStorePersonModel(age,fn,ln); // Dummy method, not important
        return new HttpStatusCodeResult(200); // Thanks to 3nigma for this
    }

我想要的是能够获取 actionValues 并将它们存储在模型中,然后将此模型存储到数据库中。为了这个例子,我们假设我想存储一个带有属性的“Person”:“first_name,last_name,age”。我也可能在未来扩展这个模型。

从移动应用程序我运行以下代码:

    $.ajax({
        type: "POST",
        url: "http://external.url/Save",
        dataType: "json",
        traditional: true, // default serialization (do I even need this?)
        data: {
            "age": data_age,
            "first_name": data_fn,
            "last_name": data_ln,
        },
        success: function(d) { alert("Success: "+d},
    }).error(function(data, errorTxt, jqXHR) {
    alert('Error: '+errorTxt);
});;

我收到了 500 内部错误,但多亏了 3nigma,情况不再如此。

编辑:

从我的网络服务器进行测试时,我在检查检查器时得到一个 http 302“找到”,但数据没有得到保存。编译到手机时,.error 处理程序会使用“parseerror”启动 inn,但数据会被保存。知道为什么吗?

回答:

302“找到”来了,因为我返回了一个视图(感谢 3nigma)应该返回这个:

    return new HttpStatusCodeResult(200);
4

2 回答 2

3

500 是内部服务器错误

public ActionResult Save(FormCollection actionValues) {
        int age = long.Parse(actionValues["age"]);// there error seems to be here you are boxing long into int
        string fn = actionValues["first_name"]; 
        string ln = actionValues["last_name"];
        CreateAndStorePersonModel(age,fn,ln); 
    }

试试吧

int age = Int32.Parse(actionValues["age"].ToString());

回复评论

您不需要包含任何内容,只需从 ActionResult 返回 Json 即可

[HttpPost]
public ActionResult Save(FormCollection actionValues) {
     //your code here
     return Json(new {IsSuccess="success" });
    }

在 ajax 成功处理程序中,您可以像访问它一样

 $.ajax({
        type: "POST",
        url: "http://external.url/Save",
        dataType: "json",
        traditional: true, // default serialization (do I even need this?)
        data: {
            "age": data_age,
            "first_name": data_fn,
            "last_name": data_ln,
        },
        success: function(data) {
            alert("Success: "+data.IsSuccess}, //will alert Success: success
    }).error(function(data, errorTxt, jqXHR) {
    alert('Error: '+errorTxt);
});;
于 2012-03-08T14:44:54.903 回答
0

可能是您的 json 数据语法造成了问题

data: 
{
    "age"         : intValue,
    "first_name"  : stringValueinSingleQuotes,
    "last_name"   : stringValueinSingleQuotes
}

更重要的是,您可以获得成功: $.ajax 调用中的 Handler() 属性。如果调用成功,将调用 Handler() 方法。

于 2012-03-08T13:00:15.427 回答