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

时间:2011-09-03 05:46:23

标签: php javascript jquery jquery-ui

我在以前的威胁中寻求帮助,这个建议引导我走向另一个方向。因此,线程死了。我取得了很大的进步,我觉得我的答案非常接近。

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

maps.php有一个表单选择标记。我需要jQuery来获取选择的任何选项的值,并使用maps_append.php加载远程URL(maps_append.php)?cmd =(value)

我拥有的是:

<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 = =的值&lt; 。选项 。 &GT;被选中

EDIT :: 我想补充一点,我知道现在不需要$ .post我正在做一个_GET值。但是,我不知道如何格式化这个...... :(

3 个答案:

答案 0 :(得分:2)

更改

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

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

答案 1 :(得分:1)

确保你有适当的缩进,否则你会很快迷路。我已经清理了大部分代码。你在你的网址中硬编码“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>

另请注意,您首先向maps_append.php发送POST请求,该请求将$_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>

答案 2 :(得分:0)

我相信你想要完成的事情可以用更简单的代码来解决。尝试用以下内容替换现有的JavaScript:

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

此代码只是说,当您更改#cmdview时,会将文件maps_append.php?cmd=的内容加载到网址后附加#cmdview的值。这应该使您可以使用#cmdview访问PHP代码中$_GET['cmd']的值。