如何使用Ajax但不使用jQuery在单独的文件中调用PHP函数?

时间:2019-04-11 08:14:45

标签: javascript php ajax

我有一个页面,用户可以通过单击“添加新”按钮并导致出现新行来在父任务中创建子任务,然后他们填写并保存。该行具有一个自动生成的参考号,该参考号是通过在另一个文件中调用PHP脚本获得的。

问题在于每个新行都有相同的参考号,因此我需要一种方法来确保该数字是唯一的。我的想法是向当前参考编号的函数中发送第二个参数,以查看它是否与当前编号相同,如果是,则生成一个不同的编号。我的想法是使用Ajax。

我尝试过Ajax,但它在控制台中未显示任何内容(以测试其是否正常工作)。该页面使用MooTools,因此我无法使用jQuery。这是我第一次尝试Ajax。

这是模板的一部分:

<script id="connectedjobtemplate" type="text/template">
    <tr id="childjobrow3" class="odd" data-row-id="3">
        <td>
            <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){
                    .
                }
            });

这是addChildJobRow函数:

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

控制台中什么也没有出现。我在想问题可能是PHP作为xhr.open行中的URL发送的,但是对Ajax的了解不足以知道是否是问题所在。

在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

与老板交谈后,他希望我不要使用Ajax并调用PHP函数,只需读取父作业的编号,然后使用JavaScript将每个子作业增加1。

谢谢那些回答。