PHP - 使用Web服务方法填充下拉数组结果

时间:2011-10-05 08:39:13

标签: php arrays web-services

我目前有一个Web服务(C#),它以PHP的形式向我的客户端返回一个字符串数组。

我想用数组结果中的字符串元素填充下拉列表。

使用以下代码,下拉列表中不会显示任何项目。

<select name="name-list" id="name-list" class="pulldown" onchange="exportName();" >

        

        $client = new SoapClient("http://localhost/MyService.asmx?wsdl", array('features' => SOAP_SINGLE_ELEMENT_ARRAYS));
        $res = $client->GetServiceArray()->GetServiceArrayResult;

        $array  = (array)$res->ArrayOfString;
        foreach($array as $val)
        {
          echo "<option value=\"" . $val . "\">" . $val . "</option>\n";
        }

    ?>

我还完成了var_dump($ res)以确保Web服务正在返回数据。我可以确认值显示在页面源中。

这一行似乎无能为力:

$array  = (array)$res->ArrayOfString;

有没有其他方法可以做到这一点?

我可以就如何制作这些物品提出一些建议。

谢谢。

3 个答案:

答案 0 :(得分:0)

应该是

foreach($array as $val)
{
    echo "<option value='$val'>$val</option>";
}

答案 1 :(得分:0)

很可能你需要这样做

echo "<option value=\"" . $val . "\">" . $val . "</option>\n";

并且不要忘记逃避$ val,因为如果里面有任何引用字符,它们将破坏你的HTML。你可以使用

$val = addslashes($val);

答案 2 :(得分:0)

$client->GetServiceArray()->GetServiceArrayResult实际上是一个函数吗? 那应该是$client->GetServiceArray()->GetServiceArrayResult()。 无论如何,如果$ res确实包含任何数据,您应首先检查:var_dump($res);