AJAX请求不返回数据

我试图在PHP页面的后台运行一个脚本,检查是否添加了新消息 数据库并通知用户。 </ p>

我使用AJAX调用带有代码的文件,并使用setTimeout()每隔10秒调用一次。 </ p>

问题是ajax没有返回任何数据。 我试着把“返回:1;” 但我仍然得到一个空白的警报框。 </ p>

PHP:</ p>

 <代码>要求( 'connect.php'); 
require_once( “INC /的init.php”);

$ check_Mail_footer = $ con&gt; prepare(“SELECT * FROM mail WHEREto =?ANDdeleed =?ANDread =?”);
$ check_Mail_footer-&gt; execute(array($ USER_ID,0,0));

$ result = $ check_Mail_footer-&gt; fetch(PDO :: FETCH_OBJ);

返回数组($ result-&gt; from,$ result-&gt; message_id);
</ code> </ pre>

Javascript:</ p>

  function checkNewMail(){

$ .ajax({
url:'newMessageCheck.php',
success:function(info)
{
alert(info);

},错误:function()
{
alert('出错了');
}
});

}

setTimeout(checkNewMail(),10000); \ n </ code> </ pre>
</ div>

展开原文

原文

I am trying to run a script in the background of my PHP pages that will check if new messages have been added to the database and notify the user.

I used AJAX to call a file with the code and the setTimeout() to call it every 10 seconds.

The problem is that the ajax is not returning any data. I tried just putting "return: 1;" but i still get an blank alert box.

PHP:

require('connect.php');
require_once("inc/init.php");

$check_Mail_footer = $con->prepare("SELECT * FROM mail WHERE `to` = ? AND `deleted` = ? AND `read` = ?");
$check_Mail_footer->execute(array($user_id,0,0)); 
$result = $check_Mail_footer->fetch(PDO::FETCH_OBJ); 

return array($result->from, $result->message_id);

Javascript:

        function checkNewMail(){

        $.ajax({
              url: 'newMessageCheck.php',
              success: function(info) 
              {
                  alert(info);

              }, error: function()
              {
                  alert('something went wrong');
              }
        });

        }


        setTimeout( checkNewMail() ,10000);

2个回答



您需要回显想要返回Javascript的数据 - 您无法返回它</ p>

对于你的数组,你可能想首先对它进行json_encode,所以写: - </ p>

  echo json_encode(array($ result-&gt; from,$ result-&gt; message_id  )); 
</ code> </ pre>

要替换: - </ p>

 返回数组($ result-&gt; from,$ result  - &gt; message_id); 
</ code> </ pre>

然后更改$ .ajax调用以自动解析JSON </ p>

   $ .ajax({
type:“GET”,
url:'newMessageCheck.php',
dataType:'json',
success:function(info)
{
alert(info [0] );

},错误:function()
{
alert('出错了');
}
});
</ code> </ pre>
</ div >

展开原文

原文

You need to echo out the data you want to return to Javascript - you can't return it

For your array, you probably want to json_encode it first so write:-

echo json_encode(array($result->from, $result->message_id));

to replace:-

return array($result->from, $result->message_id);

and then change your $.ajax call to automatically parse the JSON

$.ajax({
          type: "GET",
          url: 'newMessageCheck.php',
          dataType:'json',
          success: function(info) 
          {
              alert(info[0]);

          }, error: function()
          {
              alert('something went wrong');
          }
    });

dongye7231
dongye7231 非常感谢你 - 正是我需要的。
6 年多之前 回复
duandazhen7306
duandazhen7306 刚刚使用更新的$ .ajax调用再次更新,因此它会警告数组的第一个元素
6 年多之前 回复
duanhan1392
duanhan1392 完美 - 也使用数据,它只是信息[1],信息[2],信息[3]?
6 年多之前 回复
dongya2030
dongya2030 不,它取代了PHP中的返回,只是编辑了上面的代码来澄清
6 年多之前 回复
dsi37923
dsi37923 我应该在“成功:”部分中包含该代码吗?
6 年多之前 回复



在PHP脚本中,使用此方法:</ p>

  $ json = array(

'来自'=&gt; $ result-&gt;来自,
'message_id'=&gt; $ result-&gt; message_id
);

$ jsonstr = json_encode($ json);
echo $ jsonstr ;
</ code> </ pre>

在javascript函数中,您可以通过以下方式访问:</ p>

  $ .ajax({\  n type:“GET”,
url:'newMessageCheck.php',
dataType:'json',
success:function(info){
alert(info.from +“,”+ info.message_id) ;
}
});
</ code> </ pre>
</ div>

展开原文

原文

In your PHP script, use this method:

$json = array(
  'from'       => $result->from,
  'message_id' => $result->message_id
);

$jsonstr = json_encode( $json );
echo $jsonstr;

And in the javascript function, you can access this way:

$.ajax({
  type: "GET",
  url: 'newMessageCheck.php',
  dataType:'json',
  success: function(info) {
    alert(info.from + "," + info.message_id);
  }
});

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐