如何解决 Ajax 上的 Invalid JSON Primitive 错误?

How to solve Invalid JSON Primitive error on Ajax?

我正在尝试在 Asp.net、

上使用网络方法执行 ajax

我正在使用 JQuery-3.1.1

我想将值传递给服务器并取回值。我不知道我做错了什么。

Asp.net代码

<div class="row">
   <asp:Button ID="btnSave" runat="server" CssClass="btn btn-info"  Text="save" />
</div>

Jquery代码

$(document).ready(function () {
    $('#btnSave').click(function () {
        var name= 'xxx';

        $.ajax({
            type: "POST",
            url: "AjaxWebMethod.aspx/getFileExistOrNot",
            data: '{fileName:'+name+'}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccess,
            failure: function (response) {
                alert("failed ="+response.d);
            },
            error: function (response) {
                alert("error ="+response.d);  //This alert is executing
            }
        });

        function OnSuccess(response) {
            alert("Result ="+response.d.mydata);
        }
        return false;
    });
});

C#代码

public partial class AjaxWebMethod : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    [WebMethod]
    public static string getFileExistOrNot(string fileName)
    {
        string mydata="ajaxworking";
        return mydata;
    }
}

I don't know really where I did my mistake

控制台上的错误消息

{Message: "Invalid JSON primitive: xxx.",…}

ExceptionType:"System.ArgumentException"

Message:"Invalid JSON primitive: xxx."

能不能给出合理的解决方案。这将有助于我了解更多,谢谢

您正在进行的 jQuery 调用设置为预期响应中的 JSON 格式。您的服务器端代码似乎只是返回一个未编码为 JSON 的字符串。您需要更改服务器的输出或更改 ajax 调用的预期内容。

您的 postData 无效 JSON,字符串需要用引号引起来:

'{fileName:'+name+'}'

应该是:

 '{fileName:"'+name+'"}'