Javascript 在Wordpress主题中使用AJAX的SQL查询

Javascript 在Wordpress主题中使用AJAX的SQL查询,javascript,mysql,sql,ajax,wordpress,Javascript,Mysql,Sql,Ajax,Wordpress,我试图使用AJAX将数据插入数据库,但无法连接到服务器端的.php文件。我认为这是因为这些都是在Wordpress上运行的,所以我的.php文件的正常url路径可能不正确 以下是我的设置: 模板文件: $('#newsletter-register').submit(function(){ var ajaxRequest; // The variable that makes Ajax possible! try{ // Opera 8.0+, Firefox

我试图使用AJAX将数据插入数据库,但无法连接到服务器端的.php文件。我认为这是因为这些都是在Wordpress上运行的,所以我的.php文件的正常url路径可能不正确

以下是我的设置:

模板文件:

$('#newsletter-register').submit(function(){
    var ajaxRequest;  // The variable that makes Ajax possible!

    try{
        // Opera 8.0+, Firefox, Safari
        ajaxRequest = new XMLHttpRequest();
    } catch (e){
        // Internet Explorer Browsers
        try{
            ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try{
                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e){
                // Something went wrong
                alert("Your browser broke!");
                return false;
            }
        }
    }

    ajaxRequest.onreadystatechange = function(){

        if(ajaxRequest.readyState == 4){
            alert(ajaxRequest.responseText);
        }
    }

    ajaxRequest.open("GET", "register_newsletter.php", true);
    ajaxRequest.send(null);

});
“#时事通讯注册”是用户用于提交其信息的表单。ajaxRequest位于readyState 4时的警报将正确抛出,但将显示空值

我的php是一个简单的回音,返回一个字符串来表示连接是正确的(目前我只是想看看文件是否正确地相互调用)

我想它一定是注册_newsletter.php的url路径,因为我已经尝试将代码放在模板文件内、外部等等

我的javascript文件位于/theme/assets/js/code.js中,其中作为我的模板文件(包括register_newsletter.php文件)位于/theme中


有什么想法吗?

我昨天遇到过这种问题。在我的情况下,该页面只能从

www.site.com/aFolder/ 
脚本存储在我的

'/wp-content/themes/themeName/processForm.php'
文件夹

我使用的URL是:

../wp-content/themes/themeName/processForm.php
我的JS只是位于main header.php文件的头部,但请注意,我必须使用的URL与访问脚本的页面的URL相对。 这有什么启示吗

编辑:


作为故障排除步骤,请尝试确保您可以从php文件的绝对URL访问该文件,并查看firebug,以查看在启动ajax请求时调用的链接是否与您期望的匹配。

我昨天遇到过此类问题。在我的情况下,该页面只能从

www.site.com/aFolder/ 
脚本存储在我的

'/wp-content/themes/themeName/processForm.php'
文件夹

我使用的URL是:

../wp-content/themes/themeName/processForm.php
我的JS只是位于main header.php文件的头部,但请注意,我必须使用的URL与访问脚本的页面的URL相对。 这有什么启示吗

编辑:


作为疑难解答步骤,请尝试确保可以从php文件的绝对URL访问该文件,在firebug中查看当您发出ajax请求时调用了什么链接,看看它是否符合您的期望。

我想这就是我不明白的地方-好吧,我已经将我的脚本添加到my header.php文件中,因此它现在与您所做的一样是内联的。header.php包含在包含表单的页面中。由于将处理表单的.php文件与您的文件位于同一目录中(/wp content/themes/themeName/processForm.php),因此在通过AJAX(../wp content/themes/themeName/processForm.php)调用.php文件时,我也添加了您的URL。我不明白为什么它必须是“相对于脚本访问的页面的URL”,或者你的意思是什么。我的意思是,header.php文件包含在每个页面中,这些页面可以从site.com/或site.com/pageName(例如)访问(使用permalinks)。在发出ajax请求时,需要从调用页面的上下文(用于查看页面的url)发出请求。在我的示例中,我需要返回一个目录,从www.site.com/pageName返回到www.site.com,然后返回/wp content/themes/themename/processForm.php。这是相对于在发出ajax请求时处于活动状态的URL,而不是原始文件位置。如果脚本位于主题目录中,则可以使用
bloginfo('theme_directory')
作为脚本的路径。但是因为
readyState=4
被触发,所以脚本的路径可能不是问题所在。readyState=4似乎被触发,即使我调用了一个不存在的.php文件。我已经按照网站的步骤创建了AJAX脚本,在代码中找不到任何错误的逻辑,但我同意readyState不应该是=4,因为它是这样的。@在您的编辑中,我无法使用.php文件的绝对URL访问该文件。它给了我一个php错误,没有这样的文件存在。我认为这是因为我无法从绝对路径直接访问.php文件,因为它与Wordpress绑定在一起。所以要回答您的编辑,这将是一个错误,我需要解决。你知道怎么做吗?我想这是我不明白的地方-好吧,我已经将我的脚本添加到my header.php文件中,所以它现在像你所做的那样是内联的。header.php包含在包含表单的页面中。由于将处理表单的.php文件与您的文件位于同一目录中(/wp content/themes/themeName/processForm.php),因此在通过AJAX(../wp content/themes/themeName/processForm.php)调用.php文件时,我也添加了您的URL。我不明白为什么它必须是“相对于脚本访问的页面的URL”,或者你的意思是什么。我的意思是,header.php文件包含在每个页面中,这些页面可以从site.com/或site.com/pageName(例如)访问(使用permalinks)。在发出ajax请求时,需要从调用页面的上下文(用于查看页面的url)发出请求。在我的示例中,我需要返回一个目录,从www.site.com/pageName返回到www.site.com,然后返回/wp content/themes/themename/processForm.php。这是相对于在发出ajax请求时处于活动状态的URL,而不是原始文件位置。如果脚本位于主题目录中,则可以使用
bloginfo('theme_directory')
作为脚本的路径。但是因为
readyState=4
被触发,所以脚本的路径可能不是问题所在。readyState=4似乎被触发,即使我调用了一个不存在的.php文件。我已经按照网站创建AJAX脚本的步骤进行了操作,在代码中找不到任何错误的逻辑,但我同意readyState不应该是=4,因为它是这样的。@dougajmcdonald对于您的编辑,我无法使用绝对URL访问.php文件