Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用ajax动态添加要选择的选项_Php_Ajax_Jquery - Fatal编程技术网

Php 使用ajax动态添加要选择的选项

Php 使用ajax动态添加要选择的选项,php,ajax,jquery,Php,Ajax,Jquery,我正在尝试使用PHP、jQuery和AJAX向一个框中动态添加选项 首先,在更改第一个控件(标记列表)时调用AJAX: $('#taglist').change(function(){ $.post('../includes/ajax.php', { taglist:$(this).find("option:selected").attr('value')}, function(data) { $("#catlist").html(data.catlist)

我正在尝试使用PHP、jQuery和AJAX向一个框中动态添加选项

首先,在更改第一个控件(标记列表)时调用AJAX:

$('#taglist').change(function(){
    $.post('../includes/ajax.php', {   
      taglist:$(this).find("option:selected").attr('value')}, function(data) {
      $("#catlist").html(data.catlist);
    });
});
我编写的PHP函数fillselecteditmultiple()填充以下格式的sting:

$options = '<option value="1">Option 1</option><option value="2">Option 2</option><option value="3">Option 3</option>';
$options='option1option2option3';
我使用json_编码将其返回到页面,如下所示:

if(isset($_POST['taglist'])){
    $catresult = mysql_query("select catid from category_tags where id='".$_POST['taglist']."'");
    $rowcat = mysql_fetch_array($catresult);

    $catlist = '<select name="cat_id[]" size="5" multiple id="cat_id[]">';
    $catlist .= fillselecteditmultiple(1, 0, $rowcat['catid']);
    $catlist .= '</select>';
    echo json_encode(array("status"=>"success", "catlist" => $catlist));
}
$.ajax({
  url: 'your_script_url.php',
  success: function(data) {
    $('#mylist').html(data);
  }
});
if(isset($\u POST['taglist'])){
$catresult=mysql_query(“从类别_标记中选择catid,其中id=”。$\u POST['taglist'].“”);
$rowcat=mysql\u fetch\u数组($catresult);
$catlist='';
$catlist.=fillselecteditmultiple(1,0,$rowcat['catid']);
$catlist.='';
echo json_编码(数组(“状态”=>“成功”,“catlist”=>$catlist));
}
我需要相应地返回
中的字符串($catlist),以便最终输出如下:

<select id="mylist">
  <option value="1">Option 1</option>
  <option value="2">Option 2</option>
  <option value="3">Option 3</option>
</select>

选择1
选择2
选择3
在Firebug中,我正确地看到了响应,但页面中没有显示任何内容


我该怎么做?如果您觉得我的问题不完整,请询问任何澄清。

使用
.append
在元素中插入内容。见下文

$('#mylist').append($options);

使用
.append
在元素中插入内容。见下文

$('#mylist').append($options);

如果运行jquery库,请执行以下操作:

if(isset($_POST['taglist'])){
    $catresult = mysql_query("select catid from category_tags where id='".$_POST['taglist']."'");
    $rowcat = mysql_fetch_array($catresult);

    $catlist = '<select name="cat_id[]" size="5" multiple id="cat_id[]">';
    $catlist .= fillselecteditmultiple(1, 0, $rowcat['catid']);
    $catlist .= '</select>';
    echo json_encode(array("status"=>"success", "catlist" => $catlist));
}
$.ajax({
  url: 'your_script_url.php',
  success: function(data) {
    $('#mylist').html(data);
  }
});

或者,如果要添加额外的选项,可以附加数据,如果运行jquery lib,可以执行以下操作:

if(isset($_POST['taglist'])){
    $catresult = mysql_query("select catid from category_tags where id='".$_POST['taglist']."'");
    $rowcat = mysql_fetch_array($catresult);

    $catlist = '<select name="cat_id[]" size="5" multiple id="cat_id[]">';
    $catlist .= fillselecteditmultiple(1, 0, $rowcat['catid']);
    $catlist .= '</select>';
    echo json_encode(array("status"=>"success", "catlist" => $catlist));
}
$.ajax({
  url: 'your_script_url.php',
  success: function(data) {
    $('#mylist').html(data);
  }
});
$.ajax({
  url: 'ajax/test.html',
  success: function(data) {
   //Relevant code
    $('#mylist').html(data);
  }
});

或者,如果您想添加额外的选项,您可以附加数据,如果您正在从AJAX调用返回字符串,只需将其设置为
append()
,或者设置为
html()
。能否显示您迄今为止尝试过的代码?到底什么“不起作用”?我看不到你试图解决这个问题,或者至少通过发布失败的代码来解释问题所在。因为问题很清楚,OP愿意发布更相关的代码,所以没有必要投反对票。@TimJoyce我不同意。。在选择框中动态添加选项几乎没有什么新突破。这是众源代码调试。他对sql注入非常开放。我发现很难相信有人能在没有听说过sql注入和mysql的危险的情况下,在长达2年的49篇php文章中如此。然而,当我发布一个问题时,我更喜欢保持代码的简单性,这样读者就不必担心除了我真正想问的问题之外的其他问题。说够了。至于你的“过于本地化”评论,你认为这篇文章是努力和研究的标志?不要太快判断mate,没有人是完美的,尤其是那些相信是完美的人。如果你从AJAX调用返回字符串,只需
append()
它,或者设置
html()
。你能展示你迄今为止尝试过的代码吗?到底什么“不起作用”?我看不到你试图解决这个问题,或者至少通过发布失败的代码来解释问题所在。因为问题很清楚,OP愿意发布更相关的代码,所以没有必要投反对票。@TimJoyce我不同意。。在选择框中动态添加选项几乎没有什么新突破。这是众源代码调试。他对sql注入非常开放。我发现很难相信有人能在没有听说过sql注入和mysql的危险的情况下,在长达2年的49篇php文章中如此。然而,当我发布一个问题时,我更喜欢保持代码的简单性,这样读者就不必担心除了我真正想问的问题之外的其他问题。说够了。至于你的“过于本地化”评论,你认为这篇文章是努力和研究的标志?不要太快判断mate,没有人是完美无缺的,尤其是那些相信是完美无缺的人。这是因为响应只是在ajax调用中呼出,还是用json_encode返回?如果您只是在服务器端页面中呼出字符串,这就行得通了。但是,$options变量在javascript代码中可能不可用。这个答案是将php和js语言合并在一起。除非$options是您的js变量。我不会混合变量,但如果我通过json返回它,则不会显示任何内容,而如果我将一些dummytext输出到一个div(用于测试/调试目的)它是有效的。这是因为响应只是在ajax调用中回显,还是使用json_encode返回?如果您只是在服务器端页面中回显字符串,这是有效的。但是,$options变量在javascript代码中可能不可用。这个答案是将php和js语言合并在一起。除非$options是您的js变量。我不会混合变量,但如果我通过json返回它,则不会显示任何内容,而如果我将一些dummytext输出到div(用于测试/调试目的),则它可以工作。
$.ajax({
  url: 'ajax/test.html',
  success: function(data) {
   //Relevant code
    $('#mylist').html(data);
  }
});