Jquery $.post可以正常工作,但$.ajax给出了一个错误:“";不应直接访问此脚本&引用;
我正在使用jQuery库编写一个autosuggest/autocomplete脚本。输入ajax时,通过php文件从数据库中获取数据,并向用户提供建议 问题1: 现在,由于$.post请求工作正常:Jquery $.post可以正常工作,但$.ajax给出了一个错误:“";不应直接访问此脚本&引用;,jquery,callback,Jquery,Callback,我正在使用jQuery库编写一个autosuggest/autocomplete脚本。输入ajax时,通过php文件从数据库中获取数据,并向用户提供建议 问题1: 现在,由于$.post请求工作正常: /*this works*/ $.post("autosuggest.php", {queryString: ""+inputString+""}, function(data){ $('#suggestions').fadeIn(); $('#s
/*this works*/
$.post("autosuggest.php", {queryString: ""+inputString+""}, function(data){
$('#suggestions').fadeIn();
$('#suggestionsList').html(data);
});
$.ajax替代方案给了我以下错误:不应该直接访问此脚本强>
以下是输出错误的代码:
$.ajax({
type: "POST",
url: "autosuggest.php",
data: {data: ""+inputString+""},
success: callback
});
function callback(data) {
$('#suggestions').fadeIn();
$('#suggestionsList').html(data);
};
问题2:
$.post还有一个奇怪的地方,回调函数需要在paranthese中声明:
//this works
$.post( url, params, function callback(data) {
$("div").html(data);
}
如果我在外部声明回调函数,它将无法工作:
//this won't work
$.post( url, params, callback(data));
function callback(data)
{
$("div").html(data);
}
关于您的第一点:错误可能是由于您以不同的方式命名参数:
queryString
vsdata
。除此之外,两个调用完全相同,事实上,$.post
内部使用$.ajax
进行调用
关于你的第二点:这并不奇怪,你在做两件不同的事情。在第一个示例中,将函数传递给
$.post
。在第二种情况下,调用回调
,并将其返回值传递给$.post
(即未定义
)。您必须执行以下操作:$.post(url、参数、回调)代码> 无法回答问题1,可能是服务器应用程序在告诉该消息
在发布2中,按如下方式操作(从$.post定义中删除“数据”):
仅供参考:{queryString:+inputString+“”}
是毫无意义的。您可以使用{queryString:inputString}
感谢Felix,这是一条非常有用的注释。事实上,很明显,数据未定义,回调使用未定义的值调用php。但是在$.ajax中,alternative的工作方式不同吗?@Tomalak,它没有区别:)。我试图弄明白为什么$.ajax不起作用。我没有说它会有什么不同。这就是为什么它毫无意义非常聪明/简单的解决方案。我用params参数传递回调,并在返回后用数据显示它。对于问题1,我认为如果我使用相同的名称,它不起作用。数据是php处理后显示的变量。问题是您的$.post
调用将以queryString=foobar
和$的形式发送数据。ajax
以data=foobar
的形式发送数据。PHP脚本可能期望出现queryString
,如果不出现,则抛出错误。只需使用:数据:{queryString:inputString}
试试。
//this won't work
$.post( url, params, callback );
function callback(data)
{
$("div").html(data);
}