如何解决Ajax上无效的JSON原始错误?

时间:2017-03-29 19:16:41

标签: javascript jquery json ajax webmethod

我正在尝试使用Asp.net上的webmethod执行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;
    }
}
  

我真的不知道我犯了错误的地方

控制台上的错误消息

  

{消息:&#34;无效的JSON原语:xxx。&#34;,...}

     

ExceptionType:&#34; System.ArgumentException&#34;

     

消息:&#34;无效的JSON原语:xxx。&#34;

你能给出正确理由的解决方案吗?这对我更有帮助,谢谢

2 个答案:

答案 0 :(得分:2)

你的postData是无效的JSON,一个字符串需要它周围的引号:

'{fileName:'+name+'}'

应该是:

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

答案 1 :(得分:0)

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