Php 将Ajax数据发送到当前页面

Php 将Ajax数据发送到当前页面,php,jquery,ajax,Php,Jquery,Ajax,我有一些数据将用作图像库的一部分,但我不想在加载数据之间刷新页面(有些界面项目我希望保持可见)。然而,当我通过ajax将数据提交到同一页面时,JS注册了代码的成功执行(警报框显示),但PHP无法获取数据 我的JQuery看起来像这样 $(".gallery_thumbnail").click(function(){ var id=$(this).attr("data-id"); $.ajax({ type: "GET", url: "test.php", data

我有一些数据将用作图像库的一部分,但我不想在加载数据之间刷新页面(有些界面项目我希望保持可见)。然而,当我通过ajax将数据提交到同一页面时,JS注册了代码的成功执行(警报框显示),但PHP无法获取数据

我的JQuery看起来像这样

$(".gallery_thumbnail").click(function(){
  var id=$(this).attr("data-id");
  $.ajax({
    type: "GET",
    url: "test.php",
    data: {newid:id},
    dataType: 'text',
    success:function(result){
      // Test what is returned from the server
      alert(result);
    }
  });
});
我的PHP看起来像这样\

if(isset($_GET['newid'])){
  echo "success";
}
else{
  echo "fail";
}
我见过类似的问题,并试图复制和粘贴答案,但我似乎无法让这项工作。我还尝试了url参数:

http://localhost/test.php and simply removing the url parameter altogther.

检查请求是否为ajax,然后执行ajax处理

// this code should go before any of the web page code
if (isset($_GET['ajax'])){
    if(isset($_GET['newid'])){
      echo "success";
    }
    else{
      echo "fail";
    }
    exit;
}
设置参数以查看它是否是ajax请求

  $.ajax({
    type: "GET",
    url: "test.php",
    data: {newid:id, ajax: 'true'},
    dataType: 'text',
    success:function(result){
      // Test what is returned from the server
      alert(result);
    }
  });

我认为问题在于你对你在这里想要完成什么或者你应该怎么做有点困惑

试一试


请注意,您的页面将在alert()中完整地返回,因为您没有提前退出,这可能是为了AJAX响应。按照您的设置方式,整个页面将被发回,就像您从浏览器视口请求一样。

您是说
警报(结果)
显示
if(isset($\u GET['newid')){…
?如果你提交表单,你应该使用POST而不是GET。如果你要发送ajax请求,你应该在服务器上进行检查。所有在这里给出答案的人都希望能够理解问题解决,而不是复制粘贴,并通过weekalert(结果)显示整个页面dom(HTML代码)提出几乎类似的问题。我实际上并没有提交表单,但如果我使用POST或GET,结果会失败。当我尝试此操作时,会显示成功警报,但php不会启动。您需要将相关的php代码放置在您的“成功”回音的位置,或者添加到“成功”回音的位置。听起来,您想要执行的任何php代码本身都不应该输出任何其他内容(如果您只希望返回“success”作为响应)。问题似乎是您在问题描述中将这两者结合在一起……都输出了“成功”和页面上的剩余默认内容。因此,我进一步简化了php代码,现在只需对newid执行Get请求并尝试将变量回显到屏幕上。我现在得到一个未定义的错误,您还可以p在else{}中保存非AJAX代码如果满足条件,则阻止而不是提前退出。我尝试过此方法,但警报仍会返回整个页面代码。然后,我认为您对问题的描述中缺少一些内容。尝试@Musa的代码,但将AJAX请求发出时要运行的PHP代码放在输出“success”的同一块中。但是,再次强调,不要将整个页面的代码放在该博客中……这正是在进行AJAX调用时您想要运行的。请确保其中没有任何其他内容可以输出任何内容。
if(isset($_GET['newid'])){
  // Do whatever you want when the script gets an AJAX request

  // You want to exit early to avoid having the whole page show up in the alert()
  exit;
}

// Your normal, non-AJAX PHP code goes here