javascript / php - 根据选择的更改更改文本字段

时间:2012-05-03 21:14:34

标签: php javascript ajax jquery

每次在select选项中选择一个新选项时,我都会尝试更改多个文本字段。这是我目前的代码,我出错的任何想法?感谢。

        <script type="text/javascript">
            $("#combo").change(function() {
            var value = $(this).val();
            $.get(document, {type: value});
            });
        </script>


        <td class="bold"><label for='addType'>Select Type to Add : </label>
            <select name="addType" id="combo">
                <option value="book">Book</option>
                <option value="author">Author</option>
                <option value ="publisher">Publisher</option>
                <option value="customer">Customer</option>
            </select>
        <?php
            $type['type'] = $_GET['type'];
            if ($type['type'] == 'author') {
                print "test";
            }
        ?>

3 个答案:

答案 0 :(得分:0)

$ .get函数看起来像这样:

 $.get("php_page.php", 
       {type: value},
       function(data) {
             $("#response").html(data)
      );

在您的</select>之后放置一个ID为&#34的div;响应&#34;这将显示您的返回值:

 <div id="response">
 </div>

现在您需要做的就是在同一目录中创建第二个页面(&#34; php_page.php&#34;),它将处理您的$ .get AJAX请求:

<?php
      echo $_GET['type'];
?>

如果您不知道,PHP是一种服务器端语言。这意味着一旦页面加载,PHP就已经完成了它的工作。因此,如果您需要在页面加载后使用特殊的PHP权限,那就是AJAX的用途。

答案 1 :(得分:0)

你这样做完全错误的方式!! 请阅读有关jQuery ajax的手册。

只是为了帮助您启动项目:

你必须从你想从php文件中获取的响应中分离出基本结构。请参阅此 DEMO

HTML部分是:

<select name="addType" id="combo">
    <option value="book">Book</option>
    <option value="author">Author</option>
    <option value ="publisher">Publisher</option>
    <option value="customer">Customer</option>
</select>
<div>Response: <span id="selection"></span></div>

这也可以用PHP填充,但不是响应!

JavaScript是:

$("#combo").change(function() {
    $.ajax({
        url: "/echo/html/",
        type: "POST",
        data: {"html":"Yeah: "+$(this).val()+" is cool!"},
        success: function(data) {
            $("#selection").html(data);
        }
    });
});​

如果你把它放在一个额外的文件中会很好。

最后但并非最不重要的是,使用网址/echo/html指定的“PHP文件”会执行以下操作:

<?php
  echo $_POST["html"];
?>

希望这有帮助。

答案 2 :(得分:0)

首先,本节:

<?php
    $type['type'] = $_GET['type'];
    if ($type['type'] == 'author') {
        print "test";
}?>

仅在页面首次加载时打印,并且仅当type = xxx在url查询字符串中时才会打印。由于代码是服务器端

,因此在加载后无法在页面上运行PHP

对于jquery部分,请尝试:

$(document).ready(
    function(){
        $('#combo').change(function(){doAjax();});
    }
);
function doAjax(){
    $.get(
        'url', //i think jquery defaults to self if not url is given but you can also use <?php echo $_SERVER['PHP_SELF'];?>
        {'type' : $('#combo').val()},
        function(data){
                // what should the ajax call do with the response data?
        },
        "html"
    );
}

你也应该创建一个div来将返回的数据放入.html(),这比尝试将响应附加到其上面的最后一个元素的结尾更容易。