2013-02-15 2 views
0

Я новичок в мире веб-разработки, и я хотел бы иметь возможность подключать HTML-страницу к веб-ави. и я действительно не был успешным в этом., соединяющий javascript с веб-API

Я после этого учебника, чтобы быть в состоянии сделать это соединение: http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api

Все, что мне нужно отправить несколько входов из HTML-страницы на веб-API, который принимает эти параметры и возвращает объект

I Я использую этот код

$.getJSON("api/GeneratorController/setparameters/"+firstparameter+"/"+secondparameter+"/"+thirdparameter+"/"+fourthparameter+"/"+fifthparameter+"/"+sixthparameter, 
function (data) { 
    alert(data); //never comes here 
}).fail(function (jqXHR, textStatus, err) { 
    alert("All checks are correct, image was not generated. jqXHR = " + jqXHR.valueOf() + " textStatus=" + textStatus + " Error" + err); 
}); 

всегда идет в отказоустойчивой части, я прикрепил предупредительное сообщение, которое выходит из него

Error Message

Любой Причина, по которой это делается?

@smartmeta (я изменил опечатку, спасибо) Я последовал ваш совет и вот выход тревоги (как и ожидался, значение, которые я вставленный отображается): enter image description here

+0

Ошибка «не найден» означает, что URL-адрес, который вы передаете, не существует, а это означает, что у webapi нет маршрута, который соответствует вашему прохождению. Вероятно, вы должны передать свои параметры в виде строки запроса или тела. –

+0

@BenFelda благодарит за ваш ответ. Снова я отруби, новый в этой области, вы можете посоветовать мне руководство, чтобы показать мне, как это сделать, в моем контроллере мой код выглядит примерно так: public int setparameters (6 параметров) – user1415780

ответ

0

Так что я нашел то, что была проблема с моим кодом

две вещи:

1- я не должен использовать слово «Controller» когда я называю API, он должен быть api/Generator/...

2- имя функции должно начинаться с «получить», а не «установить», так как он «получает» возвращаемое значение из апи

Спасибо всем!

0

Ну, первое дело чтобы убедиться, что ваша серверная функция возвращает ожидаемые вами значения. Вы можете сделать это с помощью инструментов разработчика Chrome или с расширением Firebug Firefox, и я думаю, что у IE10 есть что-то подобное. Перейдите на вкладку «net», найдите запрос, соответствующий вашему вызову API, и посмотрите, что ответил сервер.

+0

Спасибо за ваш ответ, ничего на сервере все же, все по-прежнему локально на моей машине, не имеет значения? – user1415780

+0

Ну, есть твоя проблема. Сообщение об ошибке, которое вы получаете, это ваш браузер, говорящий «Я пытался поговорить с сервером, но я ничего не слышал». Который, поскольку у вас нет сервера, именно то, что вы должны ожидать. – user1618143

+0

Хорошо, если у вас нет веб-сервера, работающего локально на вашем компьютере, который вы используете для разработки, и в этом случае, если вы настроили его правильно, он должен работать так же, как и удаленный веб-сервер. – user1618143

0

Пожалуйста, добавьте строку

alert("api/GeneratorController/setparameters/"+firstparemeter+"/"+secondparameter+"/"+thirdparameter+"/"+fourthparameter+"/"+fifthparameter+"/"+sixthparameter) 

Затем вызовите скрипт и принять вывод предупреждения в браузере. Затем проверьте, обрабатывает ли ваше приложение этот маршрут.

Кстати, я думаю, у вас есть опечатка. Я думаю, это должен быть первый параметр.

Я предполагаю, что вы хотели бы сделать

"api/GeneratorController?foo=Bar 

Но когда вы новичок в этом, я хотел бы предложить вам первый попробовать пример, как есть. И после этого вы можете начать изменять сеты.

+0

Спасибо за ваш ответ. Я отредактировал свой вопрос соответственно – user1415780

+0

Предполагаю, что вы хотели бы передать некоторые параметры. – smartmeta

+0

Да, мне необходимо пройти параметры, можете ли вы показать мне, как передать несколько параметров? – user1415780

1

Ваш url необходимо для начала своего домена, а не 'api/generatorcontroller/...'. Если вы развиваетесь локально, что-то вроде http://localhost:[port]/api/generatorController/....

Кроме того, webApi карты для глаголов url, (get, post, put, delete ..), а не такие функции, как setparameters, если у вас нет функции [name = setparameters] над вашей функцией get().

Кроме того, я уверен, что у вас нет настройки маршрута для обработки URL-адреса со всеми этими параметрами. На что вы хотите посмотреть, как кажется, вы используете jQuery, является документация jQuery.get. Второй пример около дна показывает, где разместить параметры. WebAPI проверяет их в теле, если они не находятся в строке запроса.так что бы в конечном итоге выглядит как:

$.getJSON("http://"+window.location.host+"/api/GeneratorController/setparameters", {parameter1: parameter1, parameter2:parameter2 ...});

Смежные вопросы