当url中有参数时出现Ajax错误

时间:2017-09-04 05:49:37

标签: c# jquery asp.net-mvc

我有一个填充下拉列表的ajax代码,我使用mvc c#。 当我从ajax调用我的方法并且我在方向栏中有一个没有参数的URL时代码正常工作,但是如果我在方向栏中的url中有一个参数,则这不起作用并出现此错误:  “{readyState:4,getResponseHeader:ƒ,getAllResponseHeaders:ƒ,setRequestHeader:ƒ,overrideMimeType:ƒ,...}”。

这是我的代码:

$.ajax({
    url:"../Records/myList",
    type: "POST",
    dataType: 'json',
    contentType: 'application/json',
   // data: JSON.stringify(Data),
    success: function (resul) {
        Function(resul);
    },
    error: function (message) {
    }
});

我的网址:http://localhost:123/Record/EditRecord - >>所以它的工作原理

我的其他网址:http://localhost:123/Record/EditRecord/1 - >>它不像这样

提前致谢。

2 个答案:

答案 0 :(得分:0)

我无法看到代码中的任何错误,但如果您选择使用数据属性(ajax函数),我建议尝试让param在服务器上附带它的名称:

{key1: 'value1', key2: 'value2'}

或者您使用字符串查询:

page?name=ferret&color=purple

bacuse你只是说第一种方法是工作我假设不需要检查POST / GET方法。

编辑:

授予this

答案 1 :(得分:0)

从给定的第二个URL(它不起作用)我假设你想使用jQuery AJAX和HttpGet方法。 URL模式匹配此路由:

http://localhost:123/{controller}/{action}/{id}

id视为UrlParameter

因此你需要使用动作参数&表示URL参数值的数据,如下例所示:

<强>控制器

[HttpGet]
public ActionResult EditRecord(int id)
{
    // other stuff
}

查看(JS)

$.ajax({
    url: "/Record/EditRecord",
    type: "GET",
    dataType: 'json', // response type
    contentType: 'application/x-www-form-urlencoded; charset=utf-8', // header content type
    data: { id: 1 },
    processData: true, // this is important to use in GET methods
    success: function (result) {
        Function(result);
    },
    error: function (message) {
        // throw error
    }
});

或者直接使用URL参数适用于GET方法而不指定data内容:

查看(JS)

$.ajax({
    url: "Record/EditRecord/1",
    type: "GET",
    processData: true, // this is important to use in GET methods
    success: function (result) {
        Function(result);
    },
    error: function (message) {
        // throw error
    }
});

注意:使用jQuery.get作为简化版本:

$.get("/Record/EditRecord/1", function (result) {
          Function(result);
      }, "json").error(function (message) { // throw error 
      });

PS:如果您正在寻找使用AJAX的正确POST方法,这是HTTP POST请求的示例。

<强>控制器

[HttpPost]
public ActionResult EditRecord(Record rec)
{
    // other stuff
}

查看(JS)

$.ajax({
    url: "/Record/EditRecord",
    type: "POST",
    dataType: 'json', // response type
    contentType: 'application/json; charset=utf-8', // header content type
    data: JSON.stringify({ rec: { id: 1, name: 'XXXX', ... }}),
    success: function (result) {
        Function(result);
    },
    error: function (message) {
        // throw error
    }
});

参考:

Do GET, POST, PUT, DELETE in ASP.NET MVC with jQuery AJAX