在prestashop中,我正在做一个小模块。在那个聪明的模块中,我有一个表格。我想使用ajax提交这些值。所以为此,我把我的ajax作为$ .post就像这样
jQuery(document).ready(function($) {
$('.module-form').submit(function(e) {
e.preventDefault();
msg = '';
$form = $(this);
$.post(
baseDir + "modules/mymodule/mymodule.php",
{ name: 'myname', action: 'form_subscribe' },
function(data) {
var response = jQuery.parseJSON(data);
console.log(response);
}
);
return false;
});
});
在模块文件(mymodule.php)中,我有这样的代码
class MyModule extends Module {
public function __construct() {
-----
----
--
}
function form_subscribe() {
$name = $_POST['name'];
echo json_encode($name);
exit;
}
}
但是当我提交表单时,它会将响应显示为null。有人能告诉我如何解决这个问题吗?任何帮助和建议都会非常明显。感谢。
答案 0 :(得分:0)
您无法直接访问类或方法,就像您尝试的那样。 要执行操作,您必须首先实例化Class,然后调用该函数。 特别是在prestashop环境中,请执行以下步骤: 在你的模块文件夹中创建另一个php页面,让我们调用页面mymodule_ajax.php。 然后在其中检索配置,初始化prestashop上下文,然后实例化模块并执行呼叫管理。
mymodule_ajax.php:
include(dirname(__FILE__). '/../../config/config.inc.php');
include(dirname(__FILE__). '/../../init.php');
/* will include module file */
include(dirname(__FILE__). '/mymodule.php');
/* will instantiate the class MyModule so that you can access the method */
$my_mod = new MyModule;
/* using Prestashop Tools Class we ensure that the call is made from the form with action "form_subscribe */
if(Tools::isSubmit('action') && Tools::getValue('action') == 'form_subscribe')
$my_mod->form_subscribe(); //call the method
然后更改您的ajax代码以指向该URL:
$.post(
baseDir + "modules/mymodule/mymodule_ajax.php", //new url
{ name: 'myname', action: 'form_subscribe' }
您现在应该在console.log中检索json值。