0

我已经通过查看以下帖子(Ajax 不适用于 IE10)和其他几个网站进行了一些研究,但不幸的是它并没有解决我的问题,这就是我需要你帮助的原因;)

下面你可以看到我的 JQuery ajax 脚本,我的问题是我可以访问 ajax 并将值返回到 errorDivStyle,但我无法加载 $("#mainView").html(data); 数据从 PHP 脚本及其 HTML 返回。

请注意,它在 Chrome、FF 和 IE 9 中运行良好,但在 IE10 中运行良好。有什么我做错了吗?

<script type="text/javascript">
        $(document).ready(function () {
        var category = $("#category").val();
        $("#category").change(function(){
            $.ajax({
                type: "POST",
                url: "test.php",
                data: $(this).serialize(),
                cache: false,
                success: function(data) {
                    if(data)
                    {
                        $("#mainView").html(data);
                        $("#errorDivStyle").html("<font color='#000000'>" + category + " category have been loaded</font>").show();
                    }
                }
            });
            return false;
        });
    });
    </script>
4

1 回答 1

0

我认为您的代码没有明显错误。

如果您使用的是较新版本的 Jquery,那么我建议您更改:

$("#category").change(function(){

进入

$("#category").on('change', function(){

当然之后

cache: false,

添加

dataType: 'html',

我也强烈推荐使用 console.log()

if(data)
{
    //check if expected data is correct
    console.log(data);
    //make sure you can target #mainview properly
    //should output the amount of #mainviews on your screen
    console.log($("#mainView").length);

    $("#mainView").html(data);
    $("#errorDivStyle").html("<font color='#000000'>" + category + " category have been loaded</font>").show();
}

编辑:

    $("#category").on('change', function(){
        e.preventDefault();
        $.ajax({
            type: "POST",
            url: "test.php",
            data: $(this).serialize(),
            cache: false,
            dataType: 'html',
            success: function(data) {
                if(data)
                {
                    $("#mainView").html(data);
                    $("#errorDivStyle").html("<font color='#000000'>" + category + " category have been loaded</font>").show();
                }
            }
        });
    });

你为什么要返回 FALSE 呢?我刚刚意识到这可能是您正在收听的文本字段更改。所以 e.preventDefault() 也不是必需的......

此外,如果您只想将单个值传递给您的 test.php,那么您可以试试这个:

    $("#category").on('change', function(){
        $.ajax({
            url: "test.php?q="+$(this).val(),
            cache: false,
            dataType: 'html',
            success: function(data) {
                if(data)
                {
                    $("#mainView").html(data);
                    $("#errorDivStyle").html("<font color='#000000'>" + category + " category have been loaded</font>").show();
                }
            }
        });
    });

编辑:递归地修剪一个数组

/**
* Returns a recursively TRIMMED variable
*
* @access   public
* @param    mixed
* @return   mixed
*/
if ( ! function_exists('trim_r'))
{
    function trim_r($var)
    {
        //In here you can add more code to handle objects properly but I did not because I am not using them with this function
        //if (is_array($var) || is_object($var)){some code}
        if (is_array($var))
        {
            return array_map('trim_r', $var);
        }
        else
        {
            return trim($var);
        }
    }
}


// Usage examples
$_POST = trim_r($_POST);
$_GET = trim_r($_GET);
$_REQUEST = trim_r($_REQUEST);
$custom_array = trim_r($custom_array);
于 2013-07-11T13:40:24.857 回答