作为序言,我要说我对 jQuery 是“新手”。我已经掌握了概念和大部分用法,但我对所有这些括号和函数还不是很完美。
这就是为什么我可能在这里犯了一个业余错误。我使用以下代码提交一些数据,移至页面的下一部分,然后尝试将新内容加载到下一部分的下拉菜单中:
$('#submit').click(function() {
var nam = $('#name').val();
var par = $("#parentCategory").val();
var dat = $("#catDate").val();
$.post("<?php echo site_url('admin/add_gallery'); ?>", {name: nam, parent: par, cat_date: dat}, function() {
if (par != 'undefined')
{
$('#next_tab').click()
}
else
{
$("#gallery").click(),
$("#name").val('')
}
});
$.get("http://www.example.com/admin/get_galleries", function(gals)
{ // Get the Contents of Drop Down Gallery Select
$("#galleryChoose").html(gals);
});
alert('yop');
});
不幸的是,它不起作用。 POST 效果很好,但 #galleryChoose(这是一个
标记)永远不会填充新内容。
我使用 GET 调用的 URL(通常是我的测试站点的 URL,我出于示例目的更改了它)会生成一个包含所有最新元素的下拉列表,但使用 GET 引用它似乎不起作用。我是否必须以某种特定方式将其返回给 GET?我现在只是使用 return $variable
,其中 $variable 包含所有 HTML。
任何帮助将不胜感激。为这个问题奋斗了一个漫长的夜晚。
更新:这是我通过 URL 引用的代码(它是 CodeIgniter,因此位于我的 Controller 中):
function get_galleries()
{
$galleries = $this->find->all_items('galleries');
$return = '<label>Choose the Gallery:</label> <br />';
$return .= '<select id="galleryParent" name="galleryParent">';
foreach ($galleries as $gals)
{
$return .= '<option id="'.$gals->gal_name.'" value="'.$gals->gal_id.'">'.$gals->gal_name.'</option>';
}
$return .= '</select>';
echo $return;
}
最佳答案
我猜您想要做的是通过 $.post
更新一些数据,然后使用 get 获取更新的数据?在这种情况下,您会遇到问题,因为 $.post
和 $.get
是异步的,这意味着浏览器在继续执行脚本之前不会等待它完成。
这意味着您的脚本将几乎同时调用 $.post
和 $.get
,而是尝试将 get 放在 $ 的回调中.post
像这样:
$('#submit').click(function() {
var nam = $('#name').val();
var par = $("#parentCategory").val();
var dat = $("#catDate").val();
$.post("<?php echo site_url('admin/add_gallery'); ?>", {name: nam, parent: par, cat_date: dat}, function() {
if (par != 'undefined')
{
$('#next_tab').click()
}
else
{
$("#gallery").click(),
$("#name").val('')
}
$.get("http://www.example.com/admin/get_galleries", function(gals)
{ // Get the Contents of Drop Down Gallery Select
$("#galleryChoose").html(gals);
});
});
alert('yop');
});
关于jQuery GET 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3544431/