Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
Php 在backoffice PrestaShop模块中使用AJAX_Php_Ajax_Json_Class_Prestashop - Fatal编程技术网

Php 在backoffice PrestaShop模块中使用AJAX

Php 在backoffice PrestaShop模块中使用AJAX,php,ajax,json,class,prestashop,Php,Ajax,Json,Class,Prestashop,我正在为购物车PrestaShop创建一个模块,因此在创建一个在他们的系统中工作的模块时,我必须遵循一套规则框架,并且我希望在不重新加载页面的情况下通过AJAX提交表单 以下是模块页面的修剪版本,用于构建和确定显示的内容: <?php class mymodule extends Module { private $_html = ''; // Module information function __constr

我正在为购物车PrestaShop创建一个模块,因此在创建一个在他们的系统中工作的模块时,我必须遵循一套规则框架,并且我希望在不重新加载页面的情况下通过AJAX提交表单

以下是模块页面的修剪版本,用于构建和确定显示的内容:

<?php
    class mymodule extends Module
    {
        private $_html = '';

        // Module information
            function __construct()
            {
                // Get shop version
                    $versionMask = explode('.', _PS_VERSION_, 3);
                    $versionTest = $versionMask[0] > 0 && $versionMask[1] > 3;
                // Module info
                    $this->name  = 'MyModule';
                    $this->tab   = $versionTest ? 'administration' : 'Administration';
                    if ($versionTest) { $this->author = 'JD'; }
                    $this->version = '0';
                    parent::__construct();
                    $this->displayName = $this->l('MyModule'); 
                    $this->description = $this->l('Description...');
            }

        // Display content
            public function getContent()
            {
                $this->_displayForm();
                return $this->_html;
            }

        // Build the display
            private function _displayForm()
            {
                $this->_html .= '<script src="../modules/mymodule/scripts.js" type="text/javascript"></script>
                                <form name="formName" id="formName" method="get">
                                    <input type="submit" name="submitModule" value="Continue" />
                                </form>';
            }
    }
?>
还有ajax.php文件本身,我已经对其进行了精简,因此它必须显示一个结果:

<?php
    $json['response'] = 1;
    echo json_encode($json);
    exit();
?>
scripts.js:132
引用行:
if(data.response==1)

我还将它从类中取出,放在一个普通的页面/单独的目录中,并具有相同的代码,只是不在类/函数中:

index.php

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="scripts.js" type="text/javascript"></script>
<form name="formName" id="formName" method="get">
<input type="submit" name="submitModule" value="Continue" />
</form>
ajax.php

<?php
    $json['response'] = 1;
    echo json_encode($json);
    exit();
?>


当我提交页面时,我得到的警报为true,如果我查看ajax.php,我会得到
{“response”:1}
。因此,代码本身是可以的,它只是将它与它们的类/函数集成在一起。

我认为您的结果发送正常,但没有被解释为JSON,我敢说这有点jquerys的错误

header('Content-Type: text/javascript; charset=utf8');
将其放入PHP脚本中应该可以做到这一点,并强制正确解释数据中的json格式。 如果前面的建议没有实现,请尝试使用$.parseJson();与jQuery文档一样:

var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );

我认为您的结果发送正常,但并没有被解释为JSON,这有点jquerys的错误——我敢说

header('Content-Type: text/javascript; charset=utf8');
将其放入PHP脚本中应该可以做到这一点,并强制正确解释数据中的json格式。 如果前面的建议没有实现,请尝试使用$.parseJson();与jQuery文档一样:

var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );

似乎是scripts.js文件中ajax.php文件的路径导致了问题

这与prestashop中文件夹的结构有关,所有模块都放在/prestashop/modules/目录中,但模块是从/prestashop/admin/查看的。因此,将它们更改为完整路径解决了问题


感谢那些在这里帮助过我们的人,我们仍然很感激

似乎是scripts.js文件中ajax.php文件的路径导致了问题

这与prestashop中文件夹的结构有关,所有模块都放在/prestashop/modules/目录中,但模块是从/prestashop/admin/查看的。因此,将它们更改为完整路径解决了问题


感谢那些在这里帮助过我们的人,我们仍然很感激

您使用的是哪个prestashop版本?prestashop v1.5.2.0-目前也在Chrome v23.0.1271.95mif的Windows 7(64位)上的XAMPP v3.1.0.3.1.0上运行它。如果您检查homeslider模块的代码,您可能会在模块中了解ajax,此模块使用ajax更改幻灯片顺序。啊,谢谢,我现在就去看看这个,看看它是怎么回事!为什么不把console.log(response)发给我们,让我们知道到底发生了什么,我认为这与prestashop无关:)您使用的是哪个prestashop版本?prestashop v1.5.2.0-目前也在Windows7(64位)上的XAMPP v3.1.0.3.1.0上运行它在Chrome v23.0.1271.95mif中,如果您检查homeslider模块的代码,您可能会对模块中的ajax有所了解,该模块使用ajax来更改幻灯片的顺序。啊,谢谢,我现在就去看看,看看它是如何运行的!为什么不把console.log(response)发布给我们,让我们知道到底发生了什么,我认为这与prestashop无关:)我试着设置标题,它显示了prestashop AJAX加载程序,但它只是停留在那里,我没有任何结果,控制台日志中也没有任何内容。我还尝试了parseJSON,如下所示:
success:function(data){var obj=jQuery.parseJSON(data.response);alert(obj);}
我收到了“null”警报,因此我不确定我是否正确实现了它?我尝试设置标题,它显示了PrestaShop AJAX加载程序,但它只是停留在那里,我没有任何结果,控制台日志中也没有任何内容。我还尝试了parseJSON,比如:
success:function(data){var obj=jQuery.parseJSON(data.response);alert(obj);}
我得到了警报“null”,所以我不确定我是否正确实现了它?
var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );