c# – 通过Ajax发布到MVC控制器

嗨我目前正在尝试使用AJAX发布一个控制器的表单但是到目前为止我没有运气,我一直试图让表单将表单中的值提交给控制器提交表单但是,任何人都知道为什么不行? :

CSHTML

@{
    Layout = null;
}
Meta name="viewport" content="width=device-width" />
    Box">
        

控制器:

 [HttpPost]
        public string GetSearchDetails(string companyName,string specialities,string category,string location)
        {
           return liveSearchRepository.GetUserInputResults(companyName,specialities,category,location);
        }
最佳答案
从我可以看到它看起来像您的表单控件和您的Controller操作没有正确链接,因为您的控件的名称与您的操作的参数不同.

还要将ajax调用中的contentType更改为JSON,并将表单数据转换为JSON字符串.这样,如果您在通过Ajax提交表单数据之前将其输出到控制台,您可以看到发送的内容.

请尝试以下修改

@{
    Layout = null;
}
Meta name="viewport" content="width=device-width" />
    Box">
        

编辑

如果更改以下行:

var formData = JSON.stringify($("#searchform").serializeArray());

有了这段代码

var formData = "";
$.each($("#searchform"),function(i,v) {
    if (formData.length > 0) formData += ",";
        formData += v.name + ": '" + v.value + "'";
});
formData = "{ " + formData + " }";

解决方案将是通用的,如果您更改表单字段的名称,则无需更改代码.

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...