如何在Javascript中读取WebService响应的元素

时间:2017-03-11 17:08:17

标签: javascript php json xml

我是Javascript,PHP和XML的新手。 我的问题是这样的。 我正在使用此网络服务http://www.webservicex.net/country.asmx?op=GetCountries (这是WSDL:http://www.webservicex.net/country.asmx?WSDL) 我正在使用Jquery BTW。 作为我的应用程序的一部分,我试图通过Javascript将每个国家从响应中转换为HTML选择。 但我无法找到如何访问该响应的每个特定元素(国家/地区)。

到目前为止,这些是我的代码:

PHP

<?php
    $url1 = "http://www.webservicex.net/country.asmx?WSDL";
    $client = new SoapClient($url1);
    $Res = $client->GetCountries();
    echo json_encode($Res);
?>

的Javascript

这里我应该在加载时填充select,但是我甚至无法访问响应的元素,所以我只是想在div元素中打印一些东西用于测试目的。

  window.onload = function() {
                      $.post("process.php", {}, function(response) {
                            var str_res = JSON.parse(response);
                            document.getElementById("Section2").innerHTML = str_res[1];
                            console.log(response);
                       }
      }

我知道“str_res [1]”不起作用,但这正是我想弄清楚的。如何访问响应元素。 例如,获取“Aruba”并打印或将其添加到我提到的选项中。 我希望我能够解释我的担忧,并提前感谢!

1 个答案:

答案 0 :(得分:0)

试试这个

test.html文件

<html>
    <body>
        this is html page, wait to load result

        <select id="dropdown"></select>

        <script
                      src="https://code.jquery.com/jquery-3.1.1.min.js"
                      integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="
                      crossorigin="anonymous"></script>
        <script type="text/javascript">
        $.post("test.php", {}, function(response) {
                var str_res = JSON.parse(response); 
               //   console.log(str_res);
                $.each(str_res, function(i, item) {
                    //console.log(str_res[i]);
                    //console.log('-------');   

                    $('#dropdown').append($('<option>', { 
                        value: str_res[i],
                        text : str_res[i] 
                    }));
                });


            });
        </script>


    </body>
</html>

test.php文件

<?php
    $url1 = "http://www.webservicex.net/country.asmx?WSDL";
    $client = new SoapClient($url1);
    $Res = $client->GetCountries();

    $xml = simplexml_load_string($Res->GetCountriesResult);
    $data = array();
    foreach ($xml->Table as $key => $value) {
        array_push($data,(string)$value->Name);
    }

    //print_r($data);
    echo json_encode($data);
?>