gpt4 book ai didi

php - jquery、ajax返回奇怪的数据?

转载 作者:行者123 更新时间:2023-12-01 04:24:28 27 4
gpt4 key购买 nike

我做了很多ajax脚本,每次都有不同的东西。

在这种情况下,我有一个要发布的表单

<form id="sss">
<input id="qqq"/>
<input type="submit" id="s" href="Search!"/>
</form>
<div id="rrr"></div>

$('#s').click(function(){
$.ajax({
url: 'foo.php',
data: {
query: $('#q').val()
},
success: function(data) {
$('#rrr').html(data);
}
});
return false;
});

if(isset($_REQUEST['query'])){
print_r($_REQUEST['query']);
}

发生的事情是<div id="rrr"></div>已加载print_r($_REQUEST['query']);以及 html 页面的所有其余部分。

我只想返回$_REQUEST['query']

奇怪!?

有什么想法吗?这是什么success: function(data){}实际上意味着什么?

谢谢

最佳答案

如果您请求当前显示的同一页面,则您的 if 语句不会停止处理,因此页面的其余部分也会返回。之后您需要die(),或者(推荐)创建一个完全专用于处理 AJAX 请求的单独页面。以下是如何正确停止处理的示例:

if (isset($_REQUEST['query'])) {
print_r($_REQUEST['query']);
die(); // stop processing.
}

关于你的第二点,我认为你可能误解了这里实际发生的技术细节:

  1. 客户端从服务器请求foo.php。服务器根据页面中的逻辑执行foo.php,并将响应输出发送到浏览器。浏览器呈现页面。
  2. 客户端将 AJAX 请求(只不过是异步发生的请求,即与浏览器加载页面分开)发送到 foo.php?query=...
  3. 服务器执行 foo.php?query=... (就像步骤 (1) 中所做的那样!),这会导致第一个 if 在返回之前触发html 的其余部分作为响应,因此返回相同的页面,除了顶部的查询输出(尝试在浏览器中直接访问 foo.php?query=... ,我认为您就会明白我的意思)。
  4. 但是,由于它是 AJAX 请求,因此响应不是在浏览器中呈现,而是被捕获到变量 data 中。
  5. 执行回调函数 success(data),传递 AJAX 请求中服务器按原样返回的确切输出(即,变量包含与查看源代码相同的内容) >foo.php?query=... 在您的浏览器中),然后根据您的逻辑进行处理。在本例中,您将内容转储到 div 中,以便您正确地看到输出。

请花点时间安装并运行 Fiddler ,因此您可以在浏览器中加载页面时看到来回流动的确切数据,然后观察进行 AJAX 调用时发生的情况。也许它会让你的数据流和结果变得更加清晰。

希望这有帮助!

关于php - jquery、ajax返回奇怪的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7655284/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com