【问题标题】:How to return multiple values in javascript [duplicate]如何在javascript中返回多个值[重复]
【发布时间】:2015-03-27 09:05:01
【问题描述】:

您好,我是 javascript 新手。我需要从表中返回多个值。目前 jscript 只返回表中的第一个值。

我的 javascript

<script>
jQuery(document).ready(function($){
    $("#countryDropDown").change(function()
    {
        var country=$(this).val();
        function fillStateDropDown(countryStateOption)
        {
            $.each(countryStateOption, function(val, text) {
                $('#stateDropDown').append(
                $('<option></option>').val(val).html(text));
            });
        }
        function clearStateDropDown()
        {
            $('#stateDropDown option:gt(0)').remove();
        }
        if(country=='Art1')
        {
            clearStateDropDown();
            var indiaStateOption={
                '<?=$row['service']?>' : '<?=$row['service']?>',
            };
            fillStateDropDown(indiaStateOption);
        }

php代码

<?php
    $select=mysql_query("select * from service where status=1") or die(mysql_error());
    while($row=mysql_fetch_array($select)){
?>

表值

一个 | 乙 | v | v |

当前返回第一个值 A 但我需要打印所有值。 谢谢

【问题讨论】:

  • Javascript 只允许您返回 1 个值,但是该值可以是包含所有结果的数组
  • 真的,我不懂编程语言,它允许从函数返回多个值。
  • 看看 PHP 和 JS 的混合,我什至不确定这个问题是否正确......在缩进代码之后,它看起来更糟。有没有可能他实际上是在问 PHP ???

标签: javascript php


【解决方案1】:

您正在尝试根据 php 查询的结果在 select html 元素中输出选项?

首先,这是我认为您正在尝试做的事情的粗略模型http://jsfiddle.net/Lj4rqkpy/

<body>
<select id="countryDropDown">
<option value="Art1">this shows first</option>
<option value="Art1">select me to trigger on change</option>
</select>

<select id="stateDropDown">
<option value="">This will be cleared</option>
</select>
</body>

jQuery(document).ready(function($)
{
    $("#countryDropDown").change(function()
    {
        var country = $(this).val();

        function fillStateDropDown(countryStateOption)
        {
            $.each(countryStateOption, function(val, text)
            {
                $('#stateDropDown').append(
                    $('<option></option>').val(val).html(text)
                );
            });
        }
        function clearStateDropDown()
        {
            $('#stateDropDown').html('');
        }

        if(country == 'Art1')
        {
            clearStateDropDown();
            var indiaStateOption = {
                'testService' : 'testService', 'testService2' : 'testService2'
            };
            fillStateDropDown(indiaStateOption);
        }
    });

    // 
});

假设查询返回多行,并且您希望它们在您的 javascript 中的 indiaStateOption 对象中输出,您可以使用

<?php
    $serviceJSOutput = '';
    $select=mysql_query("select * from service where status=1") or die(mysql_error());
    while($row=mysql_fetch_array($select)){
        $serviceJSOutput .= "'" . $row['service'] . "' : '" . $row['service'] . "',";
    }
    // remove the last comma
    $serviceJSOutput = rtrim($serviceJSOutput, ",");
?>

然后在js中将if语句替换为

if(country == 'Art1')
{
    clearStateDropDown();
    var indiaStateOption = {
         <?=$serviceJSOutput?>
    };
    fillStateDropDown(indiaStateOption);
}

顺便说一句,如果可能的话,我建议你不要在你的 php 中使用 mysql_query,它已经被贬值了。使用 PDO 或 mysqli。

我的答案充满了假设,我没有时间对其进行全面测试,所以请在我弄错的地方纠正我。

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
  • 我试图阅读代码并更好地理解他们需要什么。诚然,我可能会偏离标准,但我认为这比我之前的答案要好得多。
【解决方案2】:

你可以很容易地返回一个带有命名键的数组或对象,javascript的内联创建语法让它变得非常简单。

数组示例:

return [value1, value2, finalValue];

对象示例:

return {
    value1Name: value1,
    value2Name: value2,
    finalValueName: finalValue
}

【讨论】:

    【解决方案3】:

    返回一个对象。

    var result = {};
    result.a=20;
    result.x='ABC';
    return result;
    

    然后您可以像这样访问返回的对象属性:

    alert(result.x);
    alert(result.a);
    

    【讨论】:

      【解决方案4】:

      您可以轻松地使用 JSON 对象在 javascript 中返回多个对象。从 .js 脚本文件返回一个 JSON 对象,并使用 jquery 在 javascript 中检索相应的值。

      【讨论】:

        猜你喜欢
        • 2015-02-26
        • 2021-03-03
        • 1970-01-01
        • 2021-07-05
        相关资源
        最近更新 更多