Invalid web service call, missing value for parameter

Ali Habibzadeh picture Ali Habibzadeh · Jun 24, 2011 · Viewed 10.2k times · Source

I have been looking at this for a while and can't see where the problem is. Any help is greatly appreciated.

[WebMethod(true)]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public static string neighbourhoodTeam(string force, string neighbourhood) 
{
    //StreamManager streamMan = new StreamManager();
    //return streamMan.StreamManagerUrlHandler("http://policeapi2.rkh.co.uk/api/" + force + "%2F" + neighbourhood + "%2F" + "people");
    return neighbourhood + force;
}

jQuery:

function getOfficers(force, neighbourhood) {
    $.ajax({
        type: "GET",
        contentType: "application/json; charset=utf-8",
        url: "../police/crimerequest.aspx/neighbourhoodTeam",
        data: JSON.stringify({ "force": force, "neighbourhood": neighbourhood }),
        dataType: "json",
        success: function (data) {
            var results = $.parseJSON(data.d);
            $.each(results, function (i) {
                businessCards.push(generateOfficerBusinessCard(
                            results[i].name,
                            results[i].rank,
                            results[i].contact_details.mobile,
                            results[i].contact_details.tel,
                            results[i].contact_details.email))
            });
            PoliceApp.businessCardsPlaceHolder.html(businessCards.toString());
        },
        error: function (xhr, ajaxOptions, thrownError) {
            alert(xhr.status);
            alert(thrownError);
            alert(xhr.responseText);
            return false;
        }
    });
}

And I get:{"Message":"Invalid web service call, missing value for parameter: \u0027force\u0027.","StackTrace":"

Answer

Mrchief picture Mrchief · Jun 24, 2011

Try sending with processData: false in your ajax params. jQuery will stringify again by default.

Use fiddler or similar tool to inspect network traffic and see what is getting actually sent to your web service.