Ajax表单没有刷新 - 成功后显示数字'1'

时间:2014-03-09 08:48:12

标签: javascript php html ajax

我有一个由2个输入字段组成的表单提交ajax表单是假设刷新页面并淡入下载按钮,但它转到php文件'download.php'并在左上角显示数字1

由于我从输入中接收信息,我猜测1是成功而0是失败。我如何阻止它这样做并保持同一页/刷新。

TL; DR - 我有一个提交正确的表单并将信息发送到电子邮件ID,但它不会刷新页面,它会转到php文件并显示数字1以便成功。

请帮忙。

HERE is my jsfiddle

接下来是我的ajax php'download.php'代码,(它确实有php开启标签,因为某种原因没有显示在这里)

<?php

$name =$_POST['name'];
$email =$_POST['email'];


// Example 

$HTML         = '<table cellspacing="0" cellpadding="8" border="0" width="600" style="background:#EEE">
                    <tr>
                    <td>File Download</td>
                    <td></td>
                    </tr>

                    <tr>
                    <td>Name:</td>
                    <td>'.$name.'</td>
                    </tr>

                    <tr>
                    <td>email:</td>
                    <td>'.$email.'</td>
                    </tr>

                    </table>';

$from = 'emailid@gmail.com';
$to           = "emailid@gmail.com";
$subject     = "Solutions Enquiry by Mr/ Mrs : ".$name;

sendHTMLemail($HTML,$from,$to,$subject);

function sendHTMLemail($HTML,$from,$to,$subject)
{
    // First we have to build our email headers
    // Set out "from" address

    $headers = "From: $from\r\n";

    // Now we specify our MIME version

    $headers .= "MIME-Version: 1.0\r\n";

    // Create a boundary so we know where to look for
    // the start of the data

    $boundary = uniqid("HTMLEMAIL");

    // First we be nice and send a non-html version of our email

    $headers .= "Content-Type: multipart/alternative;".
        "boundary = $boundary\r\n\r\n";

    $headers .= "This is a MIME encoded message.\r\n\r\n";

    $headers .= "--$boundary\r\n".
        "Content-Type: text/plain; charset=ISO-8859-1\r\n".
        "Content-Transfer-Encoding: base64\r\n\r\n";

    $headers .= "Message-ID: <".$now." TheSystem@".$_SERVER['SERVER_NAME'].">\r\n";
    $headers .= "X-Mailer: PHP v".phpversion()."\r\n";

    $headers .= chunk_split(base64_encode(strip_tags($HTML)));

    // Now we attach the HTML version

    $headers .= "--$boundary\r\n".
        "Content-Type: text/html; charset=ISO-8859-1\r\n".
        "Content-Transfer-Encoding: base64\r\n\r\n";

    $headers .= chunk_split(base64_encode($HTML));

    // And then send the email ....

    $sent=mail($to,$subject,"",$headers);

    if($sent)
        echo '1';
    else
        echo '0';

}

?>   

1 个答案:

答案 0 :(得分:2)

在JSFiddle示例中,您将忘记在沙箱中添加jQuery库。这就是为什么你的代码不起作用的原因。在纯JS中,没有像这样的选择器:$(&#39;#...&#39;)。

第二个问题是 - 你要添加

之后我在页面上没有任何刷新。

更新: 我建议您使用JSON将数据从服务器转换为客户端。添加:

dataType: 'json'

到您的$ .ajax电话和服务器端:

echo json_encode(array('status'=>1));

它可以帮助您从服务器向客户端脚本提供更多详细信息和数据。