$ .Post 404参数错误

时间:2017-03-03 11:41:41

标签: jquery ajax

当我使用ajax时,我正在使用我的MVC应用程序中的parameter调用,该调用无效(控制器未被调用)。 当我删除ajax调用和controller中的参数时,效果很好。

//代码:

 $('#btnGw').click(function (e) {             

                $.post("../api/cuews/", {  openId: "3" }, function (data) {

                    // data to manipulate for filter values

                });              

            });

//控制器

[HttpPost]
    public string Post(string openId)
    {
        string json = openId;

        return json;
    }

尝试添加Json.Stringify,

$.post("../api/cuews/", {  openId: Json.Stringify("3") }, function (data) {

                    // data to manipulate for filter values

                }); 

$.post("../api/cuews/", Json.Stringify({ openId: "3" }), function (data) {

                    // data to manipulate for filter values

                }); 

但结果是一样的。

错误:(在控制台中)

POST http://localhost/api/cuews/ 404 (Not Found)   

参数怎么办?

FYI,

相同的结构适用于带有参数的$.get

3 个答案:

答案 0 :(得分:1)

试试这个,

  1. 创建具有所需属性的模型。
  2. 将模型作为参数传递
  3. 确保从AJAX传递的参数与模型中的相同(TEXT)。
  4. 例如:

     public class TestModel
     {
         public int ID { get; set; }
         public string Desc { get;set; }
     }
    
     $.ajax({
         url: '../api/Test/',
         type: 'POST',
         dataType: 'json',
         data: JSON.stringify({ Id: "1", Desc : "Name" }),
         contentType: "application/json; charset=utf-8",
         success: function (data) {
                      alert("Success!!!")
                  },
         error: function (xhrequest, ErrorText, thrownError) {
                            alert("Error")
                  }
     });
    

    当这些状态下的参数时,AJAX运行良好。只是一个解决方法。

答案 1 :(得分:0)

您的问题是您使用$ _POST发送参数,而public string Post(string openId)请求参数在$_GET中传递。尝试将此参数分配移动到函数内部。

答案 2 :(得分:-1)

为什么不尝试:

$.ajax({
                    type: "POST",
                    contentType: "application/json;charset=utf-8",//type of data to be send
                    url:   youraddressgoeshere
                    dataType: "json",//type of data to be received
                    data: JSON.stringify(model),//data to be send
                    async: false,
                    success: function (response) {
                         //some code
                    },
                    error: function (xhr, status, error) {    
                        alert(xhr.responseText);
                    }
       });

您正在转换JSON.stringify值而不是整个对象。尝试转换整个对象并将其传递给服务器端方法。

此外,

如果您正在使用ASP.NET MVC,请转到App_Start文件夹中的RouteConfig,并检查您是如何定义网址的

FOR EX:

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Login", id = UrlParameter.Optional }
            );

注意{controller}/{action}/{id}这里我有{id}参数。因此,如果我是你,我会尝试在服务器端控制器方法中将public string Post(string openId)更改为public string Post(string id)