Pass komplexe parameter zu Web-API-service via javascript

Mache ich eine ASP.NET Web-API web-service, und ein HTML/javascript-Seite, um es zu testen. Das Problem das ich habe ist mit der übergabe eines komplexen Daten-parameter und es kommen richtig durch in den web-API-controller.

Ich weiß, es gibt zahlreiche ähnliche Fragen, und ich habe Sie gelesen und habe versucht, die Lösungen und noch nicht gelöst. Ich habe auch gelesen das einige JQuery-Dokumentation.

Hier mein controller:

public class TitleEstimateController : ApiController
{
    public IHttpActionResult GetTitleEstimate([FromUri] EstimateQuery query)
    {
            //All the values in "query" are null or zero
            //Do some stuff with query if there were anything to do
    }
}

public class EstimateQuery
{
    //Various fields
}

Der route-mapping in der WebApiConfig.cs:

config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{query}"
            );

Und die javascript:

var uri = 'api/titleEstimate/';
var query = {
            "username": $("#user").val(),
            //other fields
        };

      $.getJSON(uri,query)
          .done(function (data) {
              $('#product').text("OK");
          })
          .fail(function (jqXHR, textStatus, err) {
            $('#product').text('Error: ' + err);
          });

Derzeit bin ich ein 404. Ich habe versucht $.getJSON(uri + '/' + query) aber das hat nicht funktioniert entweder. Vorher war ich der Weitergabe dieser Objekt-ich war der Aufruf erfolgreich, so dass ich denke, das routing ist in der Regel OK. Ich habe versucht, eine Art Konverter, aber das hat nicht geholfen, immer noch einen 404. Erkennt jemand, was ich bin fehlt/falsch?

  • Gibt es eine Ausnahme, die auf der server-Seite? Haben Sie überprüft, das "Ausgabe-Fenster"?
  • Nichts in der debug-Ausgabe.
  • Du machst das alles Prima, außer für die uri. Siehe die Antwort unten für details.
InformationsquelleAutor nasch | 2015-04-30
Schreibe einen Kommentar