2017-02-09 111 views
1

我是JQuery中的新成员。我已经设法从php脚本将数据返回给JQuery,但是现在,当我将显示从php脚本返回的消息显示给用户时,我看到消息<!--Separate connection with sessions -->,并且我只想使用alert()向用户显示我的消息。JQuery从php文件返回数据

  1. 有人可以解释这是什么意思?
  2. 如何避免它显示到警报框?

PHP代码:

<?php 
    include "initialize.php"; 
    if(empty($_POST) === false){ 
     global $con; 
     $message = ""; 
     $email = trim($_POST["email"]); 
     if(isSubscribed($email) === false){ 
      $message = "Thank you for subscribing to our latest updates"; 
      mysqli_query($con,"INSERT INTO subscribers(email) VALUES('".$email ."')"); 
     } 
     else{ 
      $message = "You already subscribed."; 
     } 
     echo $message; 
    } 
?> 

jQuery代码:

$(function() { 
    $('#frms').on('submit', function (e) { 
     var email = $("#email").val(); 
     if (!validateEmail(email)) { 
      alert('Error: Make sure you provided a valid email address'); 
     } 
     else { 
      $.ajax({ 
       type: 'post', 
       url: 'initialize/subscribe.php', 
       data: $('#frms').serialize(), 
       success: function (data) { 
        alert(data); 
       } 
      }); 
     } 

     e.preventDefault(); 
    }); 
}); 
+1

'这是什么意思' - 什么? –

回答

1
<!--Separate connection with sessions --> 

这是一个HTML注释,当你调用您的jQuery的PHP脚本,它可能意味着, HTML也被添加到响应的某处。

即您的PHP“页面”不仅回应您的消息;它也反映了HTML。

一个快速解决方法是在您回复消息后立即杀死PHP脚本,以防止将任何其他输出返回给jQuery。

echo $message; 
die; // Add this 

这将在您回复消息后终止脚本,并且不允许生成任何其他输出。

如果在添加die后仍然看到HTML,则可能意味着在回复消息之前添加了HTML。在这种情况下,它可能在initialize.php中,您必须防止其他脚本也回显任何内容。

+0

我尝试过,但仍然无法工作。 – MCi

+0

你只需要找到'<! - 与会话分开的连接 - >'它在你的项目中的某个地方。 – BadHorsie

+0

感谢BadHorsie,我发现这个输出'<! - 与会话的单独连接 - >'正在这个脚本上产生'initialize.php' – MCi

1

返回类似这样的数据:

$ returnArr = array(); returnArr ['message'] = $ message;

echo json_encode(returnArr);

exit;

并在客户端使用此代码 alert(data.message);

+0

我确实尝试过这个代码,现在给我这个信息'undefined' – MCi

+0

这就是我得到的<! - 与会话分开的连接 - > {“message”:“您已经订阅了。”}'当我输出数据时'alert(data)'只有 – MCi

+0

使用这个:var obj = jQuery.parseJSON(data); alert(obj.message); –