【问题标题】:Fetching large data from MySQL database in an AJAX request在 AJAX 请求中从 MySQL 数据库中获取大数据
【发布时间】:2014-05-25 17:56:54
【问题描述】:

我正在构建一个使用 Ajax 的 PHP 应用程序。

我使用的 Ajax 代码是

    function getdetails(id){
var xhr;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}
else{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}

xhr.onreadystatechange = function(){
    if(xhr.readyState==4 && xhr.status==200){
        document.getElementById("updateform").innerHTML=xhr.responseText;
    }
}

xhr.open("GET","get_details?id="+id+"&table="+'<?php echo $table_name ?>',true);
xhr.send();
}

处理这个问题的 PHP 函数是

public function get_details(){
        $id = $_GET['id'];
        $table = $_GET['table'];
        $query = $this->db->get_where($table,array('id'=>$id));
        if($query){
            $row = $query->row();
            echo form_open('members/update_detail');
            foreach ($row as $key => $value) {
                echo $key.'     <input type="text" name='.$key.' value='.$value.'><br>';
            }
            echo '</form>';
        }

        //echo $_GET['id'];
    }

我已经定义了一个 id 为“updateform”的 div。从获取数据的意义上说,该代码运行良好。但是,它并没有获取整个数据。例如:在 VARCHAR(200) 字段中,如果我存储 Stack Overflow ,则仅显示 Stack

我获取数据的方法有问题吗?

【问题讨论】:

  • 直接在浏览器中执行php url,给出一个硬编码的id和table。检查它是否与您通过 ajax 发送的相同
  • 是的,结果是一样的。

标签: php mysql ajax codeigniter


【解决方案1】:

首先var_dump($row); 并检查它是否符合您的预期。

然后代替

 echo $key.'     <input type="text" name='.$key.' value='.$value.'><br>';

试试

echo $key.'<input type="text" name="'.$key.'" value="'.$value.'"><br>';

由于您在 html 输出中缺少 namevalue 的引号

【讨论】:

  • 您的解决方案有效。但我有一个问题,引号的问题如何导致显示的数据减少?
  • 你的 php 输出会导致 foo &lt;input type="text" name=foo value=stack overflow&gt;&lt;br&gt; 注意 valuename 缺少引号,因此创建属性 overflow
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2021-08-29
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 2017-12-07
  • 1970-01-01
相关资源
最近更新 更多