2016-01-04 4 views
3

Я делаю экзамен 70-480, и один из вопросов был готов найти выход предупреждения. Я бы предположил, что предупреждение будет показывать «тип: неопределенный». Но предполагаемый правильный ответ говорит, что он показывает «type: int».Javascript Ajax тип ответа

Я изо всех сил пытаюсь понять, где я здесь. Четыре точки путая меня является:

  • проводок будет выполнять функцию в WebService, однако,

  • Как это, что функция отклик успеха получает объект документа? Является ли это стандартным ответом на успех для POST?

  • Не удалось ли вернуть успех? Или ... Он возвращает правдивый http-код? Но опять же, как это может относиться к documentElement.localName?

  • При поиске в Google я обнаружил, что localName дает мне имя узла. Я не видел указания, что он дает мне тип возвращаемого объекта.

код ниже:

[в WebService.asmx]

private int myNumber = 57; 
[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public int GetNumber() { 
    int diff = new Random().Next(32); 
    myNumber = myNumber + diff - 16; 
    return myNumber; 
} 

[в JavaScript]

function getNumber() { 
    $.ajax({ 
     type: "POST", 
     url: "/WebService.asmx/GetNumber", 
     success: function (response) { 
     alert("type: " + response.documentElement.localName); 
     } 
    }); 
} 
+0

[ 'documentElement.localName'] (https: // разработчик .mozilla.org/en-US/docs/Web/API/Node/localName) всегда является строкой. Однако вы не ищете 'тип'' localName', а для его содержимого. – Cerbrus

ответ

0

Использование Ajax JQuery() в функции вы можете указать, что формат, который вы ожидаете от сервера. Вы можете установить это ожидание, используя ключевое слово dataType. По умолчанию это разумная догадка, поэтому он пытается сделать xml, json, script или html из ответа. Если никто не может быть догадан, вы получите строку.

Для получения кода возврата http используйте ключевое слово statusCode, которое должно быть JSON с кодами HTTP в качестве ключей и функциями как значения. Пример:

$.ajax({ 
    statusCode: { 
    404: function() { 
     alert("page not found"); 
    } 
    } 
}); 

Что касается области успеха, документы довольно конкретную информацию о нем:

успех

Тип: Function (данные Anything, строка textStatus, jqXHR jqXHR)

Функция, вызываемая при успешном выполнении запроса. Функция получает передается три аргумента: данные возвращаются с сервера, отформатированные в соответствии с параметром DATATYPE или функции обратного вызова dataFilter (...)

Вы можете прочитать всю документацию Аякса функции JQuery по адресу http://api.jquery.com/jquery.ajax/

1

Ваш веб-сервис вызывает return myNumber; который является int

Когда вы называете Аякс, и он успешно завершается, функция вы предоставите в success называется ,Эта функция автоматически передает ответ от веб-службы.

В функции успеха вы звоните response.documentElement.localName, который дает вам int потому что единственное в своем ответе является единым целым

См .documentElement и .localName

+0

Был относительно хороший ответ. Но все еще вопросы жужжат. Каков ответ успеха? Согласно WebService, он должен быть JSON, но, кажется, получает XML, поэтому подсказки кода на узле, такие как корневой элемент данных, отправленных обратно. Я бы предположил, что данные в ответ будут похожи на , чтобы он мог получить localName данных, отправленных в службу. –

+1

@RafaelVentura Все зависит от вашего сервера/службы. Ответ может быть JSON, XML, Text или любой другой формат, который может быть представлен строкой. В этом случае ваш сервер будет отвечать на xml. –

+0

* ", который дает вам int, потому что единственное, что в вашем ответе - одно целое" * Что такое целое число в javascript? Строковое представление целого числа asp.net может быть преобразовано в число, но оно будет доступно как строка сначала, если только не будет разбираться с json-строкой или xml в объект или массив js. –

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