我的脚本有很多问题。 我正在使用outlook API,我遇到了麻烦,但一切正常。 我正在尝试检索邮件并将其存储在数据库中。 当我发布单个邮件没问题,但是当我发布几条消息时没有出错。我会解释一下: 我的PHP文件显示我的视图
{{#each messages}}
<h3 id="msg-from" class="list-group-item-heading from_1">{{this.from.emailAddress.name}}</h3><button type="submit" class="btn btn-primary col-2" onclick="btn_urgent()" >urgent</button>
<h4 id="msg-subject" class="test list-group-item-heading subject_1">{{this.subject}}</h4>
<p id="msg-received" class="list-group-item-heading text-muted received_1"><em>Received: {{formatDate this.receivedDateTime}}</em></p>
<div id="post1" class="azerty">
<p id="msg-bodyPreview" class="list-group-item-text text-muted azerty bodypreview_1"><em>{{this.bodyPreview}}</em></p>
<div class="demasquer">
<p id="msg-uniqueBody" class="body_1"><em>{{{this.uniqueBody.content}}}</em></p>;
</div>
</div>
}
}
{{/each}}
我使用了Handlebars。
我设法以这种方式为每封邮件获取每个字段的值:
window.onload = function(){
console.log("********************TEST_INSERT*********************");
for($i = 0; $i <= 1; $i++){
console.log("after for");
console.log($i);
$input = document.getElementsByClassName('from_1')[$i].textContent;
$sub = document.getElementsByClassName('subject_1')[$i].textContent;
$recei = document.getElementsByClassName('received_1')[$i].textContent;
$preview = document.getElementsByClassName('bodypreview_1')[$i].textContent;
$body_1 = document.getElementsByClassName('body_1')[$i].textContent;
console.log("*********************");
console.log($input);
console.log($sub);
console.log($recei);
console.log($preview);
console.log($body_1);
console.log("*********************");
}};
然后我通过我的onclick调用的Ajax(在我看来)。
function btn_urgent(){
console.log("*************************");
console.log("btn_urgent");
console.log($input);
console.log("*************************");
$.ajax({url: '../../wp-content/plugins/game_plugin/process_general.php',
type: 'POST',
data: {info: 'insert_to_db', input: $input, sub: $sub, recei: $recei, preview: $preview},
success: function() {
console.log("*************************");
console.log("ssrtsgsgsg");
console.log("*************************");
}
我的AJAX请求调用另一个php文件中的函数(与进程相关)
$info = $_POST['info'];
$input= $_POST['input'];
$recei= $_POST['recei'];
$sub= $_POST['sub'][$i];
$preview= $_POST['preview'];
// Then call the function
insert_to_db($input, $sub, $recei, $preview);
function insert_to_db($input, $sub, $recei, $preview){
global $wpdb;
$wpdb->insert(
'test_insert', //table name
array(
'id' => '',
'from_mail' => $input,
'subject' =>$sub,
'recei' => $recei,
'preview' =>$preview,
), //columns
array(
'%d',
'%s',
'%s',
'%s',
'%s',
)
);
}
这就是我的脚本的工作原理。诀窍是我找不到在我的数据库中插入几封电子邮件的解决方案。我的按钮不知道它附加了什么邮件。 我绕圈子试图创建一个更大的循环,但我不知道要添加什么... 如果有人有解决方案/建议,我将采取以下步骤 谢谢你们所有人......
答案 0 :(得分:0)
首先,您可以将div-s的ID修改为唯一,因为HTML不喜欢ID重复。 忘记了id变量。将div标记放入PHP的每个循环中,如下所示:
{{#each messages}}
<div class="emailBody">
<h3 id="msg-from" class="list-group-item-heading from_1">{{this.from.emailAddress.name}}</h3>
<button type="submit" class="btn btn-primary col-2" onclick="btn_urgent(this)" >urgent</button>
<h4 id="msg-subject" class="test list-group-item-heading subject_1">{{this.subject}}</h4>
<p id="msg-received" class="list-group-item-heading text-muted received_1"><em>Received: {{formatDate this.receivedDateTime}}</em></p>
<div id="post1" class="azerty">
<p id="msg-bodyPreview" class="list-group-item-text text-muted azerty bodypreview_1"><em>{{this.bodyPreview}}</em></p>
<div class="demasquer">
<p id="msg-uniqueBody" class="body_1"><em>{{{this.uniqueBody.content}}}</em></p>;
</div>
</div>
</div>
}}
{{/each}}
循环开头和结尾的Div标记,并添加&#34;这个&#34;按钮onclick事件。然后你改变这个函数btn_urgent():
function btn_urgent(item){
var $thisInput = $(item).closest(".emailBody").find(".from_1")[0].innerHTML;
var $thisSub = $(item).closest(".emailBody").find(".subject_1")[0].innerHTML;
var $thisRecei = $(item).closest(".emailBody").find(".received_1 em")[0].innerHTML;
var $thisPreview = $(item).closest(".emailBody").find(".bodypreview_1 em")[0].innerHTML;
var $body_1 = $(item).closest(".emailBody").find(".body_1 em")[0].innerHTML;
$.ajax({url: '../../wp-content/plugins/game_plugin/process_general.php',
type: 'POST',
data: {info: 'insert_to_db', input: $thisInput, sub: $thisSub, recei: $thisRecei, preview: $thisPreview},
success: function() {
console.log("OK");
}
});
}
像这样按钮自己动起来,向上移动emailBody div标签并搜索所需的元素为&#34; .from_1&#34;或&#34; .body_1 em&#34;。您需要以正确的方式添加&#34; [0]&#34;部分将失败。您可以将select添加到不同的值中,如果该对象的长度大于0,则使用&#34; var ... [0] .innerHTML&#34;。
如果您需要多次发送,请创建一个全局按钮,创建一个选择&#34; .emailBody&#34;在数组中,使用每个循环遍历此数组,并将属性添加到值,如下所示&#34; function btn_urgent(item)&#34;。