我已经看过以前的答案,但是找不到任何东西。
我正在使用它发送我的回复;
echo json_encode($response);
从检查结果中,我收到的结果到响应中的页面;
<br />
<font size='1'><table class='xdebug-error xe-warning' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Warning: mail(): Failed to connect to mailserver at &quot;localhost&quot; port 25, verify your &quot;SMTP&quot; and &quot;smtp_port&quot; setting in php.ini or use ini_set() in C:\wamp64\www\ci7\php\MailSender.php on line <i>68</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0018</td><td bgcolor='#eeeeec' align='right'>377472</td><td bgcolor='#eeeeec'>{main}( )</td><td title='C:\wamp64\www\ci7\php\contact.php' bgcolor='#eeeeec'>...\contact.php<b>:</b>0</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.0039</td><td bgcolor='#eeeeec' align='right'>400616</td><td bgcolor='#eeeeec'>Apolo\MailSender->send( )</td><td title='C:\wamp64\www\ci7\php\contact.php' bgcolor='#eeeeec'>...\contact.php<b>:</b>58</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>0.0040</td><td bgcolor='#eeeeec' align='right'>401224</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.mail' target='_new'>mail</a>
( )</td><td title='C:\wamp64\www\ci7\php\MailSender.php' bgcolor='#eeeeec'>...\MailSender.php<b>:</b>68</td></tr>
</table></font>
{"status":"fail","errors":"Could not send a mail, sorry. Please try again."}
但是,我得到了错误,我不确定为什么吗?
这是JavaScript;
$.ajax({
url: config.url,
type: 'POST',
dataType: 'json',
data: $form.serialize(),
success: function(data){
if(data.status && data.status == 'fail') {
$.Apolo.modules.alertMessage({
target: $form,
type: 'error',
message: data.errors,
icon: 'warning'
});
$form.trigger('apolo.contactFormMessage');
config.onError.call($form, data);
}
else if(data.status && data.status == 'success') {
$.Apolo.modules.alertMessage({
target: $form,
type: 'success',
message: data.statusText,
icon: 'check'
});
$form.find('input, textarea').val('');
$form.trigger('apolo.contactFormMessage');
config.onSuccess.call($form, data);
}
},
error: function(jqXHR, textStatus, errorThrown){
$.Apolo.modules.alertMessage({
target: $form,
type: 'error',
message: errorThrown,
icon: 'warning'
});
$form.trigger('apolo.contactFormMessage');
config.onError.call($form, arguments);
}
});
答案 0 :(得分:1)
这是正在发生的事情
https://www.kevinleary.net/syntax-error-unexpected-token-json-position-0/
如果您看到SyntaxError:JSON中的位置< 浏览器控制台中angular.js:13920或Line 13920或0错误 angular.min.js,那么您可能正在使用HTTP API, 可能使用$ resource或$ http,并且其中一个API出现错误 通知正文中发出通知或警告。
换句话说,您得到的“响应”是 NOT JSON。这是 HTML -HTML错误消息。在末尾带有JSON字符串。
您做的是正确的-XHR请求中同时具有success: function(data)
和error: function()
回调。
您需要:
确保服务器的“错误”响应导致触发Javascript中的“错误”回调,和/或
在服务器向任一回调发送非JSON响应时检测。
答案 1 :(得分:1)
好的,我已经通过在邮件函数中添加@来解决了这个问题,该函数消除了x调试错误并给出了清晰的响应,即
if(@!mail($email, $subject, $message, $headers)){
$this->addError('Could not send a mail, sorry. Please try again.');
return false;
}
答案 2 :(得分:0)
尝试解析对象响应:
var objData = JSON.parse(data);
或在Ajax中
dataType: 'application/json'
或在服务器中
header('Content-Type: application/json');
echo json_encode($response);