jQuery .change для загрузки другого файла .php - PullRequest
0 голосов
/ 03 сентября 2011

Мой проект на PHP / MySQL.Я использую Smarty для шаблонного движка.

В моем файле smarty есть тег

maps.tpl -

    <script src="http://code.jquery.com/jquery-1.5.js"></script>
    <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>

Пока мой код jQuery находит, какое значение выбрано:

{literal}

<script>
$('#cmdview').change(function() {
    //alert('Handler for .change() called.');
        var str = "";
        url = "maps_append.php";

        $("select option:selected").each(function () {
            str += $(this).text() + " ";
           });
        $('#append').text(str);
            })
            .change();
</script>
{/literal}

Мне нужно, чтобы jQuery прослушивал значение «cmdview», а затем отправлял это значение в файл: maps_append.php.Мне нужен этот файл для .append / .change текущего файла (maps.php / maps.tpl) без перезагрузки.

Но мой jQuery работает только наполовину.JQuery находит значение, которое я пытаюсь передать, и я получил его, чтобы загрузить это правильное значение в тег <.div> с идентификатором #append.Единственное, что я не могу сделать, - это взять значение и отправить его в maps_append.php

Любая помощь будет очень признательна!

Спасибо!

PS: я думаю, что изменение будет примерно таким:

Это нужно заменить:

    $('#append').text(str);
        })
        .change();

Чем-токак это:

url = "maps_append.php";
    $.post( url, { cmd: cmdview, value: str } ,
        function( data ) {
            var content = $( data );

          $( "#result" ).append( content );
      }
    );
    $term_input.val('');
});

РЕДАКТИРОВАТЬ ::

Мой текущий файл - maps.php.Теперь у меня есть добавление maps_append.php к maps.php с этим кодом:

<script>
$('#cmdview').change(function() {
    //alert('Handler for .change() called.');
        var str = "";
            url = "maps_append.php";
        url = "maps_append.php";

        $("select option:selected").each(function () {
            str += $(this).text() + " ";
           });
        $('#append').load(url);
            })
            .change();
</script>

Мне просто нужно опубликовать значение тега select сейчас!

Еще ближе... смотрите это редактирование:

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

                    });
    </script>

Теперь страница maps_append.php добавляется в maps.php только когда я изменяю значение тега select.Мне нужно только включить значение тега select, когда теперь отображается maps_append.php.

1 Ответ

0 голосов
/ 03 сентября 2011

Я не совсем понимаю подробности того, что вы делаете здесь - весь код выглядит хорошо, но план кажется немного странным.

Обычно у вас нет программы, изменяющей исходный код.Вместо этого у вас будет хранилище данных кода в базе данных, и код будет управляться базой данных для получения другого результата.

Может быть, это то, что вы хотите сделать с контентом - сохраните его в базе данных и получитестраница, которая его отображает.


Чтобы загрузить контент через jQuery, используйте следующую строку:

function loadContent(elementSelector, sourceUrl) {
    $(""+elementSelector+"").load("http://yoursite.com/"+sourceURL+"");
}

См. ссылку: http://frinity.blogspot.com/2008/06/load-remote-content-into-div-element.html

...