【问题标题】:PHP - Fill pulldown with array results from web service methodPHP - 使用 Web 服务方法的数组结果填充下拉列表
【发布时间】:2011-10-05 08:39:12
【问题描述】:

我目前有一个 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;

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

请给我一些关于如何使项目出现的建议。

谢谢。

【问题讨论】:

  • 你回显$array?你的意思是 $val 吗?你有错误吗?您应该调试代码以验证您是否通过soap获得了正确的值

标签: php arrays web-services


【解决方案1】:

应该是

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

【讨论】:

  • 感谢您的快速回复,但它仍然没有填充下拉列表
  • 您查看过 HTML 源代码吗?其中可能隐藏着有价值的提示。
【解决方案2】:

您很可能需要这样做

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

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

$val = addslashes($val);

【讨论】:

  • 感谢您的快速回复,但它仍然没有填充下拉菜单。
【解决方案3】:

难道$client-&gt;GetServiceArray()-&gt;GetServiceArrayResult实际上是一个函数? 那么它应该是$client-&gt;GetServiceArray()-&gt;GetServiceArrayResult()。 无论如何,您应该首先检查 $res 是否包含任何数据:var_dump($res);

【讨论】:

  • 对不起,我忘了说我试过这个,当我做 var_dump($res) 时它确实返回了数组的内容。
  • 但正如你所说,有 no 下拉项目,你的 $array 似乎是空的。否则你会收到空的下拉项目,这确实是一个区别。
  • (array)$someObject 可能会以意想不到的结果结束:参见stackoverflow.com/questions/3527872/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-21
  • 1970-01-01
相关资源
最近更新 更多