-1

每次在我的选择选项中选择一个新选项时,我都会尝试更改几个文本字段。这是我目前拥有的代码,有什么想法我哪里出错了吗?谢谢。

        <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";
            }
        ?>
4

3 回答 3

0

$.get 函数应该如下所示:

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

在您</select>放置一个 id 为“response”的 div 之后,它将显示您的返回值:

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

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

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

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

于 2012-05-03T21:35:39.457 回答
0

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

只是为了帮助您开始您的项目:

您必须将基本结构与要从 php 文件中获得的响应分开。请看这个演示

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);
        }
    });
});​

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

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

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

希望这可以帮助。

于 2012-05-03T21:39:20.267 回答
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() 中,这比尝试将响应附加到其上方最后一个元素的末尾要容易得多。

于 2012-05-03T21:48:39.283 回答