我正在尝试从基于另一个组合框的组合框中的 mysql 中获取数据。它正在根据选择获取数据。 但问题是我没有以正确的方式获取结果数据。
另一个问题是我希望数据不仅在我更改选择时显示在页面加载时。
当页面加载时,它不会显示任何测试名称,但在更改后会显示。
请帮忙。非常感谢
.js代码:
<script type="text/javascript">
$(document).ready(function()
{
$(".country").change(function()
{
var id=$(this).val();
var dataString = 'id='+ id;
$.ajax
({
type: "POST",
url: "ajax_city.php",
data: dataString,
cache: false,
success: function(html)
{
$(".city").html(html);
}
});
});
});
</script>
索引.php:
<html>
<head>
<script src="assets-global/js/getdata/jquery.min.js"></script>
</head>
<body>
<select name="country" class="country" style="width:625px;">
<?php
include('con_pick.php');
$query = "select * from main_cats";
$results = mysql_query($query);
while ($rows = mysql_fetch_assoc($results))
{
$idc = $rows['id'];
$q_selected_cat = mysql_query("SELECT mcat_id FROM questions WHERE mcat_id='$mcat_id' ");
$category = mysql_fetch_assoc($q_selected_cat);
$selected_category = $category['mcat_id'];
if($idc == $selected_category){
?>
<option selected value="<?php echo $rows['id'];?>"><?php echo $rows['unique_name'];?></option>
<?php }else{ ?>
<option value="<?php echo $rows['id'];?>"><?php echo $rows['unique_name'];?></option>
<?php } } ?>
</select>
<select name="city" class="city"></select>
</body>
</html>
ajax_city.php:
<?php
include('con_pick.php');
if($_POST['id'])
{
$id=$_POST['id'];
$q_all_categories1 = mysql_query("SELECT * FROM tests where mcat_id=$id");
while ($all_categories1 = mysql_fetch_array($q_all_categories1))
{
$category_id1 = $all_categories1['id'];
$categories_name1 = $all_categories1['unique_name'];
$q_selected_cat1 = mysql_query("SELECT test_id FROM questions WHERE test_id=$test_id and id =$cats_id ");
$selected1 = "";
while ($category1 = mysql_fetch_array($q_selected_cat1))
{
$selected_category1 = $category1['test_id'];
if($category_id1 == $selected_category1){$selected1 = "selected";}
}
print "<option class='' ".$selected1." value='".$category_id1."'>".$categories_name1."</option>";
$selected1 = "";
}
}
?>
最佳答案
您的第一期: 您的屏幕截图(谈论类别)似乎与代码不匹配(谈论国家)。 看来您在 index.php 中缺少“城市”,因此请添加:
<select name="city" class="city"></select>
此外,我会在您的 ajax 调用中使用数据:
data: {
'id': id
},
如果事情没有按预期工作,请尝试 console.log(您的结果)。可能是 php 脚本发出警告或超时?
您的第二期: 页面加载后,您可以调用 change() 事件 - 就好像是用户引起了更改。来自这里:https://api.jquery.com/change/
To trigger the event manually, apply .change() without arguments
还有: 您的 ajax_city.php 代码不会验证其输入,而是将它获得的内容直接发送到 SQL 服务器。假设 $_POST['id'] 是这样的文本:“0;DROP TABLE 测试;” - 你会失去你的 table 。 $_POST['id'] 之前的简单 (int) 可以防止这种情况发生(但请阅读 SQL 注入(inject))。
关于php - 组合框没有填充为组合框,而是像文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32369772/
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我好像记得Lua有类似Ruby的method_missing的东西。还是我记错了? 最佳答案 表的metatable的__index和__newindex可以用于与Ruby的method_missing相同的效果。 关于ruby-难道Lua没有和Ruby的method_missing相媲美的东西吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7732154/
我有一个奇怪的问题:我在rvm上安装了rubyonrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
我有一个驼峰式字符串,例如:JustAString。我想按照以下规则形成长度为4的字符串:抓取所有大写字母;如果超过4个大写字母,只保留前4个;如果少于4个大写字母,则将最后大写字母后的字母大写并添加字母,直到长度变为4。以下是可能发生的3种情况:ThisIsMyString将产生TIMS(大写字母);ThisIsOneVeryLongString将产生TIOV(前4个大写字母);MyString将生成MSTR(大写字母+tr大写)。我设法用这个片段解决了前两种情况:str.scan(/[A-Z]/).first(4).join但是,我不太确定如何最好地修改上面的代码片段以处理最后一种
大家好!我想知道Ruby中未使用语法ClassName.method_name调用的方法是如何工作的。我头脑中的一些是puts、print、gets、chomp。可以在不使用点运算符的情况下调用这些方法。为什么是这样?他们来自哪里?我怎样才能看到这些方法的完整列表? 最佳答案 Kernel中的所有方法都可用于Object类的所有对象或从Object派生的任何类。您可以使用Kernel.instance_methods列出它们。 关于没有类的Ruby方法?,我们在StackOverflow
我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle
我在Rails应用程序中使用CarrierWave/Fog将视频上传到AmazonS3。有没有办法判断上传的进度,让我可以显示上传进度如何? 最佳答案 CarrierWave和Fog本身没有这种功能;你需要一个前端uploader来显示进度。当我不得不解决这个问题时,我使用了jQueryfileupload因为我的堆栈中已经有jQuery。甚至还有apostonCarrierWaveintegration因此您只需按照那里的说明操作即可获得适用于您的应用的进度条。 关于ruby-on-r
如何在Ruby中获取BasicObject实例的类名?例如,假设我有这个:classMyObjectSystem我怎样才能使这段代码成功?编辑:我发现Object的实例方法class被定义为returnrb_class_real(CLASS_OF(obj));。有什么方法可以从Ruby中使用它? 最佳答案 我花了一些时间研究irb并想出了这个:classBasicObjectdefclassklass=class这将为任何从BasicObject继承的对象提供一个#class您可以调用的方法。编辑评论中要求的进一步解释:假设你有对象