简体   繁体   中英

Need Help Diagnosing This Ajax Request Call

Need Help Diagnosing This Ajax Request Call.

filtered text is a text box from an input box further up the page , with filters is a Boolean checking if the user wants to search for anything at all and filtered text is what the user would like to filter by.

function GetData(torf) {
        var watever = { "withfilters": torf, "filteredtext": $('#SortOrdersBy2').val() };

        $.ajax({
            url: '/WebService.asmx/GetData',
            method: 'post',
            dataType: 'json',
            data: JSON.stringify(watever),
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                var employeeTable = $('#datatable tbody');

                var employees = data;

                for (i = 0; i < employees.length; i++) {
                    employeeTable.append('<tr><td>' + employees[i].CustomerId + '</td><td>' + employees[i].CustomerName + '</td><td>' + employees[i].Engineer + '</td></tr>');
                }
            },
            error: function (err) {
                alert("ERROR");
            }
        });
    }

It Goes to this web service code and runs through it on load but still displays the error function.

[WebMethod]
    [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
    public string GetData(bool withfilters, string filteredtext)
    {
        string connectionString = ConfigurationManager.ConnectionStrings["CustomerDataConnectionString"].ConnectionString;
        List<Data1> Data = new List<Data1>();
        using (SqlConnection con = new SqlConnection(connectionString))
        {
            con.Open();
            SqlCommand query = new SqlCommand
                (withfilters ? "SELECT * FROM MainTable CustomerId LIKE '%" + (filteredtext) + "%' OR CustomerName LIKE '%" + (filteredtext) + "%' OR Engineer LIKE '%" + (filteredtext) + "%')"
                             : "SELECT * FROM MainTable",con);
            SqlDataReader rdr = query.ExecuteReader();

            while (rdr.Read())
            {
                Data1 data = new Data1();
                data.CustomerId = Convert.ToInt32(rdr["CustomerId"]);
                data.CustomerName = rdr["CustomerName"].ToString();
                data.Engineer = rdr["Engineer"].ToString();
                Data.Add(data);
            }

        }
        JavaScriptSerializer js = new JavaScriptSerializer();
        return js.Serialize(Data);
    }

Any Help Would be greatly Appreciated, need more info let me know.

In your webservice you have set the UseHttpGet=true which means that this method can be executed using Http GET request not POST

 [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
 public string GetData(bool withfilters, string filteredtext)

However, in javascript you are trying to execute the method using POST from client-side

 $.ajax({
            url: '/WebService.asmx/GetData',
            method: 'post',
            dataType: 'json',

SOLUTION:

Remove the HttpGet=true from ScriptMethod attribute:

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetData(bool withfilters, string filteredtext)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM