jQuery将表单选择值添加到远程文件的$ _GET值

问题描述:

我在寻求以前的威胁方面的帮助,并且这个建议让我朝不同的方向发展。因此,线程死亡。我取得了很大的进步,我的回答非常接近。

我有两个文件: 本地文件:maps.php 远程文件:maps_append.php

maps.php具有形式选择标签。我需要jQuery来获得的任何选项是选择的价值,并与maps_append.php CMD =(值)加载远程URL(maps_append.php)

我是什么?

<form method="post" action="maps.php"> 
    <td colspan="3"> 
     <select id="cmdview" name="cmd"> 
      <option value=""></option> 
      <option value="commdata" {if $cmdOn == "commdata"}selected="true"{/if}>Communications</option> 
      <option value="contacts" {if $cmdOn == "contacts"}selected="true"{/if}>Contacts</option> 
      <option value="enrollment" {if $cmdOn == "enrollment"}selected="true"{/if}>Enrollment</option> 
      <option value="all" {if $cmdOn == "all"}selected="true"{/if}>All Schools</option> 
     </select> 

     <input type="submit" name="doSwitch" value="Submit" /> 

    </td> 

    <div id="append"></div2> 

</form> 

这是我的HTML。我的jQuery是:

<script> 
$('#cmdview').change(function() { 
    //alert('Handler for .change() called.'); 
     var str = ""; 
      url = "maps_append.php?cmd=str"; 
     $("select option:selected").each(function() { 
      str += $(this).text() + " "; 
      }); 
      $.post(url, { cmdview: str } , 
       function(data) { 
        var content = $(data); 
       $('#append').load(url); 
        }) 
        .change(); 
         }); 
</script> 

问题是我的$ _GET值(cmd)总是“str”。它不会采用我选择的HTML的价值。我无法弄清楚它的语法以获得更好的选择价值。

所有我需要的是str = =值的任何<。选项 。 >被选中

编辑:: 我想补充一点,我知道$ .post是不需要的,现在我正在做一个_GET值。但是,我不知道该怎么格式化这个... :(

确保你有适当的缩进,要不然你会你已经清理了你的大部分代码,你在你的url中拼写“str”而不是连接变量:

<script> 
$('#cmdview').change(function() { 
    //alert('Handler for .change() called.'); 
    var str = '', 
     url = 'maps_append.php?cmd='; 
    $('select option:selected').each(function() { 
     str += $(this).text() + ' '; 
    }); 

    url += str; 

    $.post(url, { cmdview: str } , function(data) { 
     var content = $(data); 
     $('#append').load(url); 
    }).change(); 
}); 
</script> 

另请注意,您第一次做一个POST请求maps_append.php这将有两个$_POST['cmdview']$_POST['cmd']设置为您发送的选项,那么一旦该脚本返回的响应,通过使用load()方法做一个GET请求,这将随后替换#append的HTML。不知道为什么会出现在年底,去年change()

从我可以告诉,这听起来更像是你试图做更多的事情是这样的:

<script> 
$('#cmdview').change(function() { 

    var url = 'maps_append.php?cmd=' + $(this).val(); 

    $.get(url, function(data){ 
     $('#append').append(data); 
    }); 
}); 
</script> 
+0

我也不确定。我刚刚通过了这个代码的大量版本。这是我在做print_r($ _ GET)时最接近它的工作。如果我知道如何正确格式化,我可以摆脱$ .post – Charlie

+0

您是否看到我的备用解决方案?我想我已经在第二个解决方案中为您解决了很多问题(但我也在假设它应该如何工作)。 – Andrew

+0

是的!安德鲁,你真棒!我现在得到_GET数据!谢谢!! – Charlie

变化

url = "maps_append.php?cmd=str"; 

url = "maps_append.php?cmd=" + str; 
+0

我试过了。在maps.php中,我正在做print_r($ _ GET);.它说[cmd] => ....没什么。该值不被传递。 – Charlie

+0

由于某些原因,我不明白,str​​不是我的选择选项的价值。 ( – Charlie

+0

)'str ='“'现在还为时过早,你需要在'.post()'。'.post(”maps_append.php?cmd =“+ str,{cmdview :str},'。'str'也作为变量'cmdview'传递,所以你可以通过'$ _POST ['cmdview']'在php中访问它,并把它放在url上,只需要url (“)maps_append.php”' –

我相信,你正在试图完成的任务可以用更简单的代码来解决。试着用这个替换现有的JavaScript:

$(function() { 
$('#cmdview').change(function() { 
    $('#append').load("maps_append.php?cmd=" + $(this).val()); 
}).change(); 
}); 

此代码简单地说,当你改变#cmdview加载文件maps_append.php?cmd=的内容与#cmdview附加到URL的值。这应该让这样你就可以在你的PHP代码$_GET['cmd']访问#cmdview值。