我正在构建一个新脚本,我正在尝试添加一个PHP函数来发送电子邮件。我在JavaScript函数中嵌套了几个Ajax调用。每次我调用它只是重新加载页面。
我包含jquery和JavaScript库以及以下内容。
<script src="assets/js/main.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
我调用该功能的按钮如下。
<button type="button" onclick="jq1()"
class="btn btn-primary">Submit</button>
JavaScript和AJAX函数是我所包含的库的一部分。具体细节如下。
JavaScript函数是
function jq1 () {
doAjax();
}
反过来调用以下AJAX。
function doAjax()
{
var name, email, message;
name = JSON.stringify($('name').val();
email = JSON.stringify($('email').val();
message = JSON.stringify($('message').val();
ajax = phpcall(name, email, message);
}
这是实际php函数调用的Jquery。
function phpcall (name, email, message)
{
return $.ajax({
{ url: 'file.php',
type: 'POST',
data: { email: email, name: name, message: message }
return false;
});
}
我测试的PHP表单命令行,它的工作原理。以下是实际PHP调用的详细信息。
<?php
function mail2() {
if (isset($_POST['name']))
(
$name = json_decode(sanitize($_POST['name']));
)
if (isset($_POST['email']))
(
$email = json_decode(sanitize($_POST['email']));
)
if (isset($_POST['message']))
(
$email = json_decode(sanitize($_POST['email']));
)
$to = "willdoit.winchester@gmail.com";
$subject = "Service Inquiry";
$txt = $message . $email;
$headers = "From: service@willdoitwinchester.com";
mail($to,$subject,$txt,$headers);
}
?>
我是Ajax和JQuery的新手,但是,在这里,我无法感觉到我正在重新发明轮子。
我在声明中包含了JQuery,我是否需要为JSON和AJAX单独声明?我提供的详细信息中是否存在语法错误?这将是函数调用的正常进程(JavaScript,两个嵌套的AJAX调用,然后是PHP?)?我错过了专业人士看一看的东西吗?
答案 0 :(得分:0)
Hy,对不起,但我不明白你写的东西
name = JSON.stringify($('name').val();
首先缺少一个结束括号和#来恢复该值,但这是次要问题,所以代码必须是
name = JSON.stringify($('#name').val());
但问题是另一个JSON.stringify正在将一个OBJECT转换成一个字符串,所以我真的不会写你的书面因为我认为$(&#39;#name&#39;)。val()是值不是对象。 所以解决这个问题,但只有你可以知道你为什么要对值进行JSON字符串化而不是JSON对象,还有其他问题,你在PHP中使用的sanitize函数是个人函数?否则会出错。 .. 在Ajax对象里面以这种方式返回false是什么意思?返回false是什么意思? 顺便说一句,代码必须以这种方式重写,但有一些我真正不理解的JSON.stringify的问题。 另一个问题是你如何切换file.php中的mail2函数?这是另一个问题,但我想你做得那么好...... 顺便说一句。
Ps:但为什么JSON会串通? ;)
HTML
<label for="name">Nome</label>
<input type="text" id="name" value="" name="name"><br>
<label for="email">Email</label>
<input type="text" id="email" value="" name="email">
<div class="form-group">
<div class="Descrizione">
<label for="InserisciDescrizione" class=""><b>Descrizione : </b></label>
<textarea id='message' placeholder="Inserisci Descrizione"
name='message' rows='5' cols='60' value=""
title="Descrizione"></textarea>
</div>
</div>
<button type="button" id="btnEmail" onclick="jq1()">Submit</button>
JS
function jq1 () {
doAjax();
}
function doAjax(){
var name, email, message;
name = JSON.stringify($('#name').val());
email = JSON.stringify($('#email').val());
message = JSON.stringify($('#message').val());
ajax = phpcall(name, email, message);
}
function phpcall (name, email, message){
return $.ajax({
url: 'file.php',
type: 'POST',
data: { email: email, name: name, message: message }
});
}
PHP
function mail2() {
if (isset($_POST['name'])){
$name = json_decode($_POST['name']);
}
if (isset($_POST['email'])){
$email = json_decode($_POST['email']);
}
if (isset($_POST['message'])){
$message= json_decode($_POST['message']);
}
$to = "willdoit.winchester@gmail.com";
$subject = "Service Inquiry";
$txt = $message . $email;
$headers = "From: service@willdoitwinchester.com";
//print '1' .$name .'2' .$email .$message;exit;
mail($to,$subject,$txt,$headers);
}
答案 1 :(得分:0)
我更正了语法错误,页面不再重新加载,但是,电子邮件没有被发送。
我在初始JavaScript调用中添加了一些日志记录,如下所示。
function jq1 () {
var txtFile = "/tmp/test.txt";
var file = new File(txtFile);
file.open("w"); // open file with write access
file.writeln("First line of text");
file.close();
doAjax();
}
文本文件没有填充任何内容。什么也没写。
然后我将JQuery和AJAX函数从库中移出并移动到HTML中,如下所示。
<script language="javascript">
function jq1 () {
var txtFile = "/tmp/test.txt";
var file = new File(txtFile);
file.open("w"); // open file with write access
file.writeln("First line of text");
file.close();
doAjax();
}
function phpcall (name, email, message)
{
return $.ajax({
url: 'file.php',
type: 'POST',
data: { email: email, name: name, message: message }
});
}
function doAjax()
{
var name, email, message;
name = JSON.stringify($('#name').val());
email = JSON.stringify($('#email').val());
message = JSON.stringify($('@message').val());
ajax = phpcall(name, email, message);
}
</script>
这仍然导致了同样的事情。按钮点击没有任何反应。
我是否应该在脚本中包含任何语言?我实际上只是声明了以下内容。
<script src="assets/js/vendor/modernizr-2.8.3-respond-1.4.2.min.js"></script>
<script language="javascript" src="assets/js/main.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
在我调用函数的声明或按钮标记中似乎存在根本性的错误。我将其包括在内。
<button type="button" id="btnEmail"
onclick="jq1()" class="btn btn-primary">Submit</button>
对我来说似乎很简单。
抱歉,我花了一些时间来进行测试。我们的网页脚本很有用。有什么建议吗?