我对MooTools非常陌生,对JavaScript也相当陌生。
我的代码为用户生成新行,以将其他子作业添加到当前作业。作为生成的模板的一部分,将显示通过调用PHP函数创建的参考号。问题在于,当生成第二(和后续)行时,参考编号是相同的。我正在使用PHP,JavaScript和MooTools,因此无法使用jQuery。
所有代码都在同一页面中。我了解客户端和服务器端编程之间的区别。我正在寻求帮助以使其正常工作。我不知道从哪里开始。
我尝试了串联,但是显然不起作用,因为PHP是服务器端,而JavaScript是客户端。我不了解Ajax,并且已经看过有关它的一些教程,但是我需要调用一个函数,而不是单击按钮就做一些事情,我迷路了。
这是生成的模板的一部分:
<script id="connectedjobtemplate" type="text/template">
<tr id="childjobrow3" class="odd" data-row-id="3">
<td style="width: 15%;">
<input data-row-id="3" id="reference[3]" name="childjobid[3][reference]" value="<%= ref %>" class="ref" size="14" style="background-color: transparent; border: none;" />
</td>
</tr>
</script>
我检查是否要单击“添加新”按钮:
$(document.body).addEvent('click:relay(#add-new-row)', function (e, el) {
try{
e.preventDefault();
addChildJobRow();
}catch(e){
.
.
}
});
然后在调用模板之前找到参考号:
function addChildJobRow() {
try {
lastrow++;
var refNum = '<?php echo $this->MJob->getNewJobRef(232); ?>';
Elements.from(connectedjobtemplate({
rownum: lastrow,
cl: cl,
ref: refNum,
nysid: '',
dinNum: '',
warrantNum: ''
})).inject($('newChildJobTable'));
} catch (e) {
.
.
}
}
我希望能够使用第二个参数作为当前参考号来调用getNewJobRef函数。然后,我可以检查生成的参考编号是否与当前编号相同,如果存在,请再次调用。
我已经看了好几天了,所以很可能有一个简单的解决方案正盯着我,我看不到它。任何帮助都会很棒。 TIA。
更新: 我在Ajax上试过了手,到目前为止,这是我所拥有的,但是仍然无法使用。我认为问题出在PHP脚本部分,但是我对如何更改它一无所知。
function addChildJobRow() {
try {
lastrow++;
var refNum;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
console.log(this.responseText);
refNum = this.responseText;
}
};
xhr.open('GET', '<?php echo $this->MJob->getNewJobRef(232); ?>', true);
xhr.onload = function() {
console.log('Test');
};
xhr.send();
//refNum = '<?php echo $this->MJob->getNewJobRef(232); ?>';
Elements.from(connectedjobtemplate({
rownum: lastrow,
cl: cl,
ref: refNum,
nysid: '',
dinNum: '',
warrantNum: ''
})).inject($('newChildJobTable'));
} catch (e) {
.
.
}
}