c# - 使用 jQuery $.Ajax 将 DTO 连同附加参数传递给 WebMethod

标签 c# javascript jquery webmethod

你好,

我有看起来有点像这样的 WebMethod...

[WebMethod]
    public static string ProcessItem(Item item, ItemStatus status)
    {
        try
        {
            item.Process(status);
            return "Success!";
        }
        catch (Exception ex)
        {
            return ex.Message;
        }
    }

我有一个看起来有点像这样的 jQuery 方法...

function Process(dto, status) {
        $.ajax({
            type: 'POST',
            url: 'ProcessPO.aspx/ProcessItem',
            data: JSON.stringify(dto) + status',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: function (msg) {
                if (msg.d)
                    alert('success');
            },
            error: function (xhr, status, errorThrown) {
                alert(xhr.responseText);
            }
        });
    }

在 data: 行中,我如何连接两者以便正确传递它们?

dto 是这样定义的...

var dto = { 'item': item };

最佳答案

var d = JSON.Stringify(dto);
d.status = status;

然后在ajax调用中

data: d

另外,通过查看您的代码,您可能希望返回 JsonResult。

return Json(new {Success=true}); //Success
return Json(new {Success=false, Message = ex.Message}); //Failure

//if it is a get request
return Json(new {Success=true}, JsonRequestBehavior.AllowGet) //Success
return Json(new {Success=false, Message = ex.Message}, JsonRequestBehavior.AllowGet) //Failure

这将允许您在 javascript 中查看该方法的结果。

success: function(response){
    if(response.Success){
        alert('Success!');
    }else{
        alert('Failure! ' + response.Message);
    }
}

关于c# - 使用 jQuery $.Ajax 将 DTO 连同附加参数传递给 WebMethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10507624/

相关文章:

c# - 将 List<DerivedClass> 转换为 List<BaseClass>

javascript - Immutable.js 不按值进行比较

javascript - 如果第一个字段相同,我想将表行显示为内表行如何执行此操作

jquery - 样式消息框

php - 在子主题中包含用于表单验证的 Jquery 文件

c# - 在 MS SQL 2012 上从 Windows Installer 运行 SQL 脚本

c# 如何将日期时间转换为 4 个字节的字节数组

javascript - 在谷歌饼图中加载数据

jquery - 使用 JQuery 修改 iFrame 中内容的 CSS

java - Java中避免ClassCastException的策略