Squeak.ru - шаблоны программирования

Я не могу получить ответ от веб-службы, используя Angular javascript

var msg = document.getElementById('inputXML').innerHTML;Как передать входной xml в качестве параметра веб-службе и отобразить ответ от веб-службы с помощью углового javascript в html. Вот мой код, пожалуйста, помогите, я не могу получить ответ от веб-службы.

<div ng-app="customerApp" ng-controller="customersController">

    <ul>
        HI<br><br><li ng-repeat="x in names">{{x}}</li>
    </ul>

</div>

<script>
var app = angular.module('customerApp');

app.factory(
        "setAsXMLPost",
        function() {
            //prepare the request data for the form post.
            function transformRequest(data, getHeaders) {
                var headers = getHeaders();
              headers[ "Content-type" ] = "text/xml; charset=utf-8";
                // using parsexml for xml
                return(jQuery.parseXML(data));
            }
            return(transformRequest);
        }
);




    function customersController($scope, $http, setAsXMLPost) {
        var msg = document.getElementById('inputXML').innerHTML;
        $http.post("url.asmx", msg, {transformRequest: setAsXMLPost}).success(function(response) {
                    $scope.names = response;
                });
    }
</script>
<div id="inputXML">
    <ACORD> <SignonRq> <UserId>CUser</UserId> <Password>XuViDgegi/KtGyJuXfuMrw==</Password>
    <SignonPswd> <CustId> < </ACORD>
</div>

02.12.2014

Ответы:


1

Поскольку вы не извлекаете содержимое div. Вы просто извлекаете узел #inputXML из дерева DOM. Вы можете попробовать это

var msg = document.getElementById('inputXML').innerHTML;
02.12.2014

2

Я не уверен насчет xml, но вы не публикуете его, используйте innerHTML, чтобы получить фактический xml из <div id="inputXML">.

inputXML : msg.innerHTML // use innerHTML to get the actual xml
02.12.2014

3

Вы проверили, правильно ли работает ваш контроллер, я думаю, что стандартное объявление контроллера будет примерно таким:

.controller('customersController', ['$scope', '$http', 'setAsXMLPost',function($scope, $http, setAsXMLPost){
    var msg = document.getElementById('inputXML').innerHTML;
    $http.post("http://nordevd208wa1x.csc-fsg.com/TPOServiceEnh7/TPOService/TPOService.asmx", msg, {transformRequest: setAsXMLPost}).success(function(response) {
        $scope.names = response;
    });
}]);
02.12.2014
  • New.html:39 Uncaught SyntaxError: Unexpected token . angular.js:36 Uncaught Error: [$injector:modulerr] errors.angularjs.org/1.2.26/$injector/…gleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.2.26%2Fangular.min.js%3A18%3A387) 03.12.2014

  • 4

    в var msg вы получаете объект javascript, хотя для обработки вам нужен полный html, поэтому он должен быть

    var = document.getElementById('inputXML').innerHTML;
    

    Также по умолчанию tranformRequest для $http в angular js - это json, вам придется изменить его на text/xml. Я написал статью о том, как вы можете его изменить пример tranformRequest angularjs

    полный пример, имя файла test.php размещено в корне

    <?php
    if ( $_SERVER['REQUEST_METHOD'] === 'POST' ){
        $xmlData = file_get_contents('php://input');
        header("Content-type: text/xml; charset=utf-8");
        echo '<?xml version="1.0" encoding="utf-8"?>' . $xmlData;
        exit;
    }
    
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <body >
    <title>Simple xml post in angularjs Web Application</title>
    <meta name="Description" content="Simple xml post in angularjs Web Application">
        <div ng-app="customerApp" ng-controller="customersController">
            <ul>
                <li ng-repeat="x in users">{{x}}</li>
            </ul>
        </div>
        <div id="inputXML">
        <ACORD>
            <SignonRq><UserId>CUser1</UserId><Password>XuViDgegi/KtGyJuXfuMrw==</Password></SignonRq>
            <SignonRq><UserId>CUser2</UserId><Password>XuViDgegi/KtGyJuXfuMrw==1</Password></SignonRq>
        </ACORD>
    </div>    <!-- Libraries -->
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.3/angular-route.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script>
    var app = angular.module('customerApp', []);
    
    app.factory(
            "setAsXMLPost",
            function() {
                //prepare the request data for the form post.
                function transformRequest(data, getHeaders) {
                    var headers = getHeaders();
                    headers[ "Content-type" ] = "text/xml; charset=utf-8";
                    // using parsexml for xml
                    return(jQuery.parseXML(data));
                }
                return(transformRequest);
            }
    );
    
    app.factory(
            "getAsXML",
            function() {
                //prepare the request data for the form post.
                function transformResponse(data, getHeaders) {
                    var headers = getHeaders();
                    headers[ "Content-type" ] = "text/xml; charset=utf-8";
                    // using parsexml for xml
                    return(jQuery.parseXML(data));
                }
                return(transformResponse);
            }
    );
    function customersController($scope, $http, setAsXMLPost, getAsXML) {
        var msg = document.getElementById('inputXML').innerHTML;
        $scope.users = [];
        $http.post("test.php", msg, {transformRequest: setAsXMLPost, transformResponse: getAsXML}).success(function(returnedXMLResponse) {
            //here you will get xml object in reponse in returnedXMLResponse
        });
    }
    </script>
    </body>
    </html>
    
    02.12.2014
  • не могли бы вы написать вам nordevd208wa1x.csc-fsg.com/TPOServiceEnh7/TPOService/ код Также, пожалуйста, исправьте свой js из моего отредактированного ответа 02.12.2014
  • Я проверял свою машину и ваш API, что привело к NetworkError: 504 Gateway Timeout - nordevd208wa1x .csc-fsg.com/TPOServiceEnh7/TPOService/. пожалуйста, проверьте, что ваш API работает нормально? 02.12.2014
  • Сэр, он просто отображает входной XML... который я написал в ‹div› 02.12.2014
  • Кроме того, при отладке вашего отредактированного скрипта отображается ошибка, которая не определена. 02.12.2014
  • отредактировал ваш вопрос на предмет ошибки. теперь, пожалуйста, проверьте и дайте мне знать, если вы все еще сталкиваетесь с какой-либо ошибкой 02.12.2014
  • Сэр, я хочу получить ответ xml от моей веб-службы asmx, когда я передаю свой входной xml... но ваш код просто возвращает мне мои те же входные узлы xml. 02.12.2014
  • angular.js:36 Uncaught Error: [$injector:nomod] ошибки .angularjs.org/1.2.26/$injector/nomod?p0=customerApp angular.js:36 Uncaught Error: [$injector:modulerr] errors.angularjs.org/1.2.26/$injector/…gleapis.com%2Fajax%2Flibs%2Fangularjs% 2F1.2.26%2Fangular.min.js%3A18%3A387) 02.12.2014
  • Аман, не могли бы вы поделиться кодом веб-сервиса, то, что мы делаем в приведенном выше коде, заключается в отправке запроса xml в ваш веб-сервис, и ожидаемый ответ должен быть в формате JSON, потому что мы нигде не меняли tranformResponse, а тип содержимого по умолчанию для transformResponse — json. 02.12.2014
  • для изменения ошибки var app = angular.module('customerApp'); в var app = angular.module('customerApp', []); 02.12.2014
  • можете ли вы сделать plunker вашего кода plnkr.co, чтобы я мог отладить его самостоятельно 02.12.2014
  • Сэр, не могли бы вы дать мне фиктивный код для обращения к веб-службе с xml в качестве входного запроса и отображения ответа xml от веб-службы.... наша веб-служба принимает только ввод xml, а не jason... и веб-служба работает нормально. 02.12.2014
  • Хорошо, Аман, я напишу и поделюсь статьей об этом, объясняющей xml-запрос и ответ с помощью angular, с некоторым примером кода. 02.12.2014
  • тем временем вы можете отправить мне свои подробные требования, чтобы я мог написать программу соответственно 02.12.2014
  • Я просто хочу отправить запрос xml, используя angular js в html, для веб-службы asmx, и в ответ я хочу отобразить ответ xml, который моя веб-служба отправит после получения запроса xml 02.12.2014
  • ReferenceError: jQuery не определен в transformRequest (localhost:8080/Angular_dummy/New.html:30 :24) по адресу xc (ajax.googleapis.com/ajax/libs/angularjs/1.2.26/) в f (ajax.googleapis.com/ajax/libs/angularjs/1.2.26/) в F (ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.m 03.12.2014
  • отредактировал мой ответ для полного демонстрационного примера с использованием PHP в качестве языка на стороне сервера. У меня нет хорошей идеи с сервисами asmx, поэтому я использовал php. 03.12.2014
  • Большое спасибо, сэр. Но мой веб-сервис принимает только xml-запрос... так что не могли бы вы помочь мне в создании промежуточного программного обеспечения, которое может преобразовывать jason в xml для запроса и наоборот для ответа? 04.12.2014
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...