AJAX请求状态200,但没有实际的“响应”

时间:2017-07-14 作者:SBZ

因此,基本上,我编写了一个AJAX调用,它运行一个PHP脚本,响应一个按钮点击(由JS处理)来响应hello world。我得到状态200,在浏览器“inspect element”功能的响应部分,我得到“Hello world”,但它不会显示在页面上。我知道“echo”应该有用,因为我用它来表示我的站点已正确连接到MySQL数据库。因此,响应部分显示“Connected SuccessfullyHello World”(sic),但页面仅显示“Connected Successfully”。所以出于某种原因,它实际上并没有显示Hello World的比特。

PHP

function test() {
echo "Hello World"; 
die();
}
JS公司

function yes(){
   jQuery.ajax({
   url: ajaxurl,
   data: {
        \'action\':\'test_function\'            
         },
   });
};
如果答案非常简单,请提前道歉-我对web开发还不熟悉

更多信息:使用X主题(WP)

1 个回复
SO网友:Luckyfella

你的计划是正确的,但需要做一些调整。您的javascript需要(在最佳情况下)一个对象作为结果,如果您想看到来自PHP的结果,js必须处理这个问题。一个快速的测试是创建一个控制台日志-只是为了检查它是否工作。

尝试按以下方式编辑代码,并在浏览器控制台中进行检查:

// PHP file:
function test() {

$result = array(0 => \'Testresult from Ajax 1\', 1 => \'Testresult from Ajax 2\');
header(\'Content-Type: application/json\');
die (json_encode($result));
}
然后在js中:

// JS file:
function yes() {

var obj = {
    url: ajaxurl,
    type: \'POST\',
    data: {
        action: \'test_function\'
    },
    dataType: \'JSON\',
    cache: false
};

jQuery.ajax(obj)
    .done(function( data ) {
        console.log(\'result is: \', data);
    });
};
如果有效,您可以在done()函数中处理您的结果,例如将内容写入dom或其他任何内容。

结束