使用Ajax post时的空参数

时间:2013-09-20 03:05:57

标签: ajax asp.net-mvc-3

我找到了几个答案(例如here),但它们似乎无法解决我的问题。

                var result = {
                    command: 'exportWAV',
                    type: type
                };
                $.ajax({
                    url: 'SubmitSound',
                    type: 'Post',
                    data: JSON.stringify(result),
                    contentType: 'application/json; charset=utf-8',
                    success: function (msg) {
                        alert(msg);
                    }
                });

后端代码

        [HttpPost]
        public ActionResult SubmitSound(string blob)
        {
            // Create the new, empty data file.
            string fileName = AppDomain.CurrentDomain.BaseDirectory + "/Content/Sound/" + Environment.TickCount + ".wav";
            FileStream fs = new FileStream(fileName, FileMode.CreateNew);
            BinaryWriter w = new BinaryWriter(fs);

            w.Write(blob);
            w.Close();
            fs.Close();           
            return new JsonResult() { Data = "Saved successfully" };
        }

result不为空,因为this.postMessage = result;将文件发送回客户端进行下载。 w.Write(blob)一直抱怨blob不能null

我怎样才能让它发挥作用?谢谢你和最好的问候

1 个答案:

答案 0 :(得分:0)

这样做:

data: JSON.stringify({ blob: result}),

您可能希望更改控制器操作中的string参数,以获取具有相同JSON结构的对象...这意味着相同的属性名称。

对象应该是这样的:

public class MyBlob{
  public string command {get; set;}
  public string type {get; set;}
}

所以,你的行动应该是:

 public ActionResult SubmitSound(MyBlob blob){
    //Here your action logic
 }