English 中文(简体)
自定义函数, Ajax Ajax 不如预期的那样工作
原标题:Custom function with Ajax not working as expected

我整天都在用这个问题打头。 我对 JavaScript 缺乏很好的了解, 而对于 DOM 操作来说, 我开始使用 jQuery 。 很容易构建一些基本的东西。 我想要的是建立自定义的函数, 它会以基于我传递到此函数的输入参数而从数据库中提取的列表来填充表单 。

代码看起来是这样的:

(function($) {
        $.fn.multiSelect = function(a,b,c) {
        var someVar1 = parseInt(a,10);
        var someVar2 = parseInt(b,10);
        var someVar3 = c;
        var dataString = "a=" + someVar1 + "&b=" + someVar2 + "&c=" + someVar3;
        $.ajax({
            type:       "POST",
            url:        "test_ajax.php",
            data:       dataString,
            dataType:    json ,
            success:    function(data) {
                var a1 = data[ a ];
                var b1 = data[ b ];
                var c1 = data[ c ];
                return $(this).html( <p>  + a1 + b1 + c1 +  </p> );
            }
        });
        return $(this).html( <p>  + someVar1 + someVar2 + someVar3 +  </p> );
    }
    };
}) (jQuery);

测试ajaax.php内部的PHP代码是:

<?php
if(isset($_POST[ a ]) AND !empty($_POST[ a ])) {
    $_something = array(
                     a => $_POST[ a ],
                     b => $_POST[ b ],
                     c => $_POST[ b ]
                    );
    echo json_encode($_something);
}
?>

当我使用我的jQuery 函数像这样时:

$( #someDiv ).multiSelect(1,1, user );

在 $. (ajax) 的侧面函数, 返回不值, 返回“ 11 user ” 。

如果我使用上面的代码 像这样:

$(function() {
    var dataString =  a=  + 1 +  &b=  + 1 +  &c=user ;
    $.ajax({
            type:       "POST",
            url:        "test_ajax.php",
            data:       dataString,
            dataType:    json ,
            success:    function(data) {
                var a1 = data[ a ];
                var b1 = data[ b ];
                var c1 = data[ c ];
                $( #someDiv ).html( <p>  + a1 + b1 + c1 +  </p> );
            }
        });
});

它从测试_ajax.php 脚本中获取数据。 所有这些都很简单, 只是为了解决问题, 然后我要构建复杂的 PHP 脚本, 它将用数据库来完成它的工作 。

我猜我对变量(本地/全球)或错误的 jQuery 函数链设置做错了什么。

由于我会在不同的菜单上重复很多次这个操作, 功能会增加逻辑性, 然后一遍又一遍地重复整个代码 。

任何帮助都将不胜感激。

最佳回答

我认为你的意思是 您的 $.ajax 呼叫中的这条线不起作用:

return $(this).html( <p>  + a1 + b1 + c1 +  </p> );

这是因为 this ,在 success 调用中,没有指向 DOM 对象。它指向包含 AJAX 调用设置的对象。

您需要在 AJAX 调用中使用 < code> context 属性,使 < code> this 意指您想要的意思 :

    $.ajax({
        type:       "POST",
        url:        "test_ajax.php",
        data:       dataString,
        dataType:    json ,
        context:    this,
        success:    function(data) {
            var a1 = data[ a ];
            var b1 = data[ b ];
            var c1 = data[ c ];
            return $(this).html( <p>  + a1 + b1 + c1 +  </p> );
        }
    });
问题回答

暂无回答




相关问题
ajax login using httpRequest?

I am trying to develop my login script to give feedback to the user if the login is valid or not. Basically if it isn t correct a div box will show saying its wrong, if its correct it will show its ...

Virtual Tour using sketch up, ajax, flash technologies

I want to know if there are existing technology that make your 3d models in sketch into virtual tours, using either Ajax or Flash for web presentation. If there s none, which will be a good approach ...

How can i update div continuously

I have asp.net application where i have a div which showing the value from other site. The value of that site is changing continuously. I want that my div will automatically update in some interval ...

热门标签