Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过ajax将数据传递到php并返回_Php_Jquery_Ajax - Fatal编程技术网

通过ajax将数据传递到php并返回

通过ajax将数据传递到php并返回,php,jquery,ajax,Php,Jquery,Ajax,如果用户需要在forgotForm.php中重置电子邮件,我有一个基本表单: <script src="js/forgotPwd.js" type="text/javascript"></script> ..... <edited for brevity> ..... <form class="forgot active" id="forgotPwdForm" method="post" action="#" autocomplete="off"

如果用户需要在forgotForm.php中重置电子邮件,我有一个基本表单:

<script src="js/forgotPwd.js" type="text/javascript"></script> 
 ..... <edited for brevity> .....

<form class="forgot active" id="forgotPwdForm" method="post" action="#" autocomplete="off" >
    <h2>Reset Password</h2>

    <div>
        <label>Email</label>
        <input type="email" id="email" name="email"  placeholder="Email" required />
    </div>

    <div>
        <legend><span id="spambot">Are you human?</span></legend>
        <input id="num1" name="num1" readonly="readonly" class="sum" value="<?php echo rand(1,4) ?>" /> + 
        <input id="num2" name="num2" readonly="readonly" class="sum" value="<?php echo rand(5,9) ?>" /> =
        <input id="captcha" name="captcha"  class="captcha" maxlength="2" required />
    </div>


    <div class="bottom">
        <button type="submit" class="button-blue" name="submit">Submit</button>
    </div>

    <div class="messagebox">
            <div class="alert-message"></div>
    </div>
</form>
这些数据被输出到控制台,在我看来很好:

email=johndoe%40gmail.com&num1=2&num2=6&captcha=8
这正是我在表格上输入的。在“process_forgotPwd.php”中,我运行服务器端验证,然后向用户发送一封带有重置链接的电子邮件(他们毫无问题地获得了该链接)。在“process_forgotPwd.php”的底部,我返回一个状态,这取决于电子邮件是否正确发送:

if (!$mail->Send()) {
    echo json_encode(array('result' => $msg_email_error));
    die();
} else {;
    //header("Content-Type: application/json", true);
    echo json_encode(array('result' => 1));
    exit();
    }
(有人建议使用标题行,但我尝试不使用)。当控件返回forgotPwd.js时,它抛出以下错误:

Error: parsererror SyntaxError: JSON.parse: unexpected character at line 2 column 1 of the JSON data
然而,我的数据看起来很好。我错过了什么

错误:parserror语法错误:JSON.parse:JSON数据第2行第1列出现意外字符

数据类型:“JSON”,
更改为
数据类型:“text”,
。服务器返回的数据不是有效的JSON。
dataType
设置不是针对发送到服务器的数据,而是针对服务器返回的数据,这意味着解析错误指的是
msg
而不是
数据

success
回调中的唯一语句为:

console.log( msg );

确认返回数据的结构后,更新
success
处理程序中的逻辑以及相应的
dataType
值。

是否会看到结果控制台.log(msg);?就在if(msg.result==1){不,我没有。我还刚刚打印了:
错误日志(print_r(array('result'=>1));
在我的php文件中,它打印了一个1。您是否删除exit();函数,它会完全关闭应用程序?没有区别。如果一切都成功,它看起来像是“1”未正确传递。好的……我想差不多了。我将数据类型更改为文本,并在控制台中获得以下信息:
Content:SMTP->FROM SERVER:220-box.xxxx.com ESMTP Exim 4.82#2 Wed,2014年7月23日16:11:29-0600……
SMTP->FROM SERVER:250 ok id=1XA4l0-0005ol-Aw
{“结果”:1}
为什么我要从smtp电子邮件中得到我想要的结果?@KathyL是时候看看你的PHP脚本了。这就是所有这些内容的来源。是的,刚刚意识到-发布时出现问题。删除smtp调试消息,如果电子邮件成功发送,我将返回1。vice
json\u encode
。谢谢!
console.log( msg );