我是javascript菜鸟,而且我不明白为什么这样做:

$().load('/my/url/', {my:data, more:data}, jsFunc());

function jsFunc()
{
    $("#myid").val("yep");
}


但这不是:

$().load('/my/url/', {my:data, more:data}, function() {jsFunc()});

function jsFunc()
{
    $("#myid").val("yep");
}


我尝试了$ .ajax而不是$ .load,结果相同。我将响应数据传递给jsFunc(),这就是为什么我在函数内部需要jsFunc()的原因。我敢肯定这很简单,只是我对javascript不太了解。谢谢。

再次感谢您提供的所有帮助。我决定使用$ .post,因为它最适合这种情况,但是现在我在响应数据上遇到了麻烦。我的代码如下所示:

$.post('/my/url/', {my:data, more:data}, function(data) {
    var strung = JSON.stringify(data)
    var parse = jQuery.parseJSON(strung)
    console.log(parse.some);}, 'json');


我正在登录控制台以查看现在返回的内容,当我看到记录的正确值时,我将添加回调。我从jQuery api页面获得的过程,但只会记录undefined。当我将parse.some更改为parse时,控制台日志将显示对象,并且我可以选择一个元素并查看正确的key:value对。任何帮助都会很甜蜜。

最佳答案

都不行。第一个似乎有效,因为您立即调用了函数jsFunc,所以它不等待任何响应。

如果使用$()创建一个空的jQuery对象并在其上使用load方法,它将不会调用服务器,因为没有元素可以放置结果。

要指定回调函数,请使用函数名称:

$('#someElement').load('/my/url/', {my:data, more:data}, jsFunc);


或函数表达式:

$('#someElement').load('/my/url/', {my:data, more:data}, function() { jsFunc(); });

09-12 02:08