将数据添加到现有控件

时间:2012-09-29 14:59:34

标签: php

我有一个下拉框,其管道尺寸在应用程序启动时填充。

我想在另一个下拉框中选择管道类型时动态更改。我已经设法制作ajax功能,其中根据选择的管道绘制所有尺寸的html表。所以我只想在同一个文件中嵌入这个功能。

下面的代码会创建一个带尺寸的新下拉框。但我已经有一个(id =维度)。

如何填充现有的而不是创建新的?

echo "<select id='dimensions'>";

while ($row = mysql_fetch_array($result2)) {
   echo "<option value='" . $row['nominalsize'] ."'>" . 
    $row['nominalsize'] ."</option>";
}

echo "</select>";

3 个答案:

答案 0 :(得分:0)

  

如何填充现有的而不是创建新的?

这很快,但应该这样做:在发送AJAX请求之前,从DOM中删除现有的<select id='dimensions'>。然后你可以在以后安全地插入它。

为了缩短时间,您也可以在插入之前将其删除。所以当时你得到了AJAX响应。

答案 1 :(得分:0)

如果您有一个数据库表,其中包含您自己的网页使用中定义的大小值:

<?php 
// Assume that $nominalsize already exists with real value 

$sql = "SELECT * FROM table WHERE nominalsize='$nominalsize'"; 
$res = mysql_query($sql) or die(mysql_error()); 

if (mysql_num_rows($res) > 0) 
{ 
  // There is already a row with the specified $nominalsize
} 
else 
{ 
  // Not exist, then ... INSERT
}

如果没有,你喜欢来自其他页面的反向信息,你需要CURL或DOM, 和提取标签。

答案 2 :(得分:0)

在页面加载后填充控件需要一些技巧,比如AJAX:

这是一个基本的工作流程:

  1. 使用
  2. 的信息创建响应(HTML o AJAX)
  3. 在页面调用来自javascript的HTTP请求(我推荐jQuery用于此任务)
  4. 在请求回调中构建
  5. 实施例

    Options.php

    <?php
    // http://localhost/options.php
    // /var/www/options.php
    $options = array(
       1 => 'Cat',
       2 => 'Dog'
    );
    
    header('Cache-Control: no-cache, must-revalidate');
    header('Content-type: application/json');
    
    return json_enconde($options);
    

    的script.js

    // script.js in your page
    $(document).ready(function(){
      var $select = $('#id-select);
      $.ajax({
        url: '/options.php',
        dataType: 'json',
        success: function(data) {
           $.each(data, function(i, e) { 
              $select.append($('<option value=' + i + '>' + e + '</option>'));
           });
        }
      });
    });
    

    以前只是样本,但你可以想出一个想法