使用Ajax调用PHP脚本(无jQuery)

时间:2019-04-10 12:48:49

标签: javascript php ajax

我对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) {
                    .
                    .
                }
            }

0 个答案:

没有答案