Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX/json返回空的opencart_Javascript_Php_Ajax_Json_Opencart - Fatal编程技术网

Javascript AJAX/json返回空的opencart

Javascript AJAX/json返回空的opencart,javascript,php,ajax,json,opencart,Javascript,Php,Ajax,Json,Opencart,嗨,我正在尝试一个简单的ajax请求,但我一直得到json的空值 这是我的javascript <script> $(document).ready( function() { $('#donate-box-submit').on('click', function() { var donate_code = $('#charity-campaign-code').val(); var donate_amount = $('#charity-campaign-am

嗨,我正在尝试一个简单的
ajax
请求,但我一直得到
json
的空值

这是我的javascript

<script>
$(document).ready( function() { 
$('#donate-box-submit').on('click', function() {

    var donate_code = $('#charity-campaign-code').val();
    var donate_amount = $('#charity-campaign-amount').val();
    $.ajax({
        url: 'index.php?route=donate/donatenow',
        type: 'post',
        data: {
            donate_code: donate_code,
            donate_amount: donate_amount
        },
        dataType: 'json',
        beforeSend: function() {

        },  
        complete: function() {

        },          
        success: function(json) {
        console.log(json);
            alert(json['test']);
        },
        error: function() {
        }
    });
   });

 });



</script>

我还尝试了
echo-json\u-encode($json)
只是为了排除OpenCart函数的任何问题,但同样的问题仍然存在。

问题在于调用该方法的路径。不确定您使用什么类作为控制器,但路由应该有三个部分:
route=aaa/bbb/donatenow
在哪里
aaa/donatenow

console.log(json)
缺少一个
在行的末尾:
console.log(json)。在控制台中检查请求,您是否能够看到来自PHP控制器的响应?您声明了$json两次。移除第一个。关闭第二个数组中
array
后的空格。可能是$this->response->setOutput()失败,但是如果echo json_encode($json);也没有显示响应,则很可能没有调用donatenow()。@逻辑单元-没有调用它是正确的-请参阅下面我的答案中的原因-现在已修复,谢谢!你是对的,这个函数没有被调用,如果逻辑单元想回答的话,请放心,只是因为我在看到下面的答案之前根据他们所说的进行了修复
    public function donatenow() {

    $json = array(
    'test' => 'Output this text'        
    );


    $this->response->setOutput(json_encode($json));     
}