Jquerymobile选择菜单不能超过73条记录

时间:2012-10-08 21:19:18

标签: javascript jquery select jquery-mobile menu

我有一个选择菜单,该菜单由对php脚本的Ajax调用填充,该脚本以XML格式返回表中的产品列表。

产品表有大约400条记录,由于某种原因,选择菜单不会显示任何返回全部的select语句。使用Firebug进行故障排除,我可以看到php代码正确地将所有400条记录正确地返回给浏览器,但它没有显示出来。

当我将select语句改为“SELECT ProductID,ProductName FROM product WHERE ProductID< 74”时,它可以工作,显示前73个项目。认为这可能是因为第74项有问题,我将where子句改为“> 74”,但这也没有返回。然而,“> 74和< 120”的where子句有效。

可能是什么原因?请在下面找到代码段。

代码的javascript如下:

function populateProducts(xmlindata) {

var mySelect = $('#ili_product');
 $(xmlindata).find("Product").each(function()
  {
    optionValue=$(this).find("id").text();
    optionText = $(this).find("name").text();
    mySelect.append($('<option></option>').val(optionValue).html(optionText));    
  });
}

php代码是:

<?php

include("dbconfig.inc.php");

header("Content-type: text/xml");
echo "<?xml version=\"1.0\" ?>\n";
echo "<products>\n";
$select = "SELECT ProductID,ProductName FROM product";
try {
    foreach($dbh->query($select) as $row) {
        echo "<Product>\n\t<id>".$row['ProductID']."</id>\n\t<name>".$row['ProductName']."</name>\n</Product>\n";
    }
}
catch(PDOException $e) {
    echo $e->getMessage();
    die();
}

echo "</products>";
?>

2 个答案:

答案 0 :(得分:0)

也可能是因为您的退回数据中的某些非法字符未正确转义..

检查console.log($(xmlindata))是否返回所有数据。特别检查值中可能包含'等字符的值可能会破坏你的字符串

答案 1 :(得分:0)

在基于xml / json数据生成/形成html时转义引号和其他字符是一个好习惯

在你的情况下,

optionValue=$(this).find("id").text().replace('\'','&quot;');

replace("'", "&rsquo;");

这样你就可以逃避引用,如果它们是造成问题的引号。不确定问题是否是由于字符串断开造成的。

你可以像这样逃避多个角色。

.replace(/&/g, "&amp;").replace(/'/g, "&quot;");

注意//正则表达式和g标志,这将在全局范围内找到这些字符。