Javascript 处理<;选择>;模块类中带有ajax的值,prestashop 1.6
我正在开发一个ps模块,它允许您将产品附件分类,并在产品首页显示它们 我在附件中使用了一个可拖动列表,当您将它们放到类别中时,它会变成一个选项标记,每个类别都有一个选择标记,用于放置附件 我想保存附件和它们被丢弃的类别,所以我想调用ajax将数据带到我的模块类中,但我不熟悉ajax,无法处理它 这就是我所做的: js代码(在适当的.tpl中):Javascript 处理<;选择>;模块类中带有ajax的值,prestashop 1.6,javascript,php,jquery,ajax,prestashop-1.6,Javascript,Php,Jquery,Ajax,Prestashop 1.6,我正在开发一个ps模块,它允许您将产品附件分类,并在产品首页显示它们 我在附件中使用了一个可拖动列表,当您将它们放到类别中时,它会变成一个选项标记,每个类别都有一个选择标记,用于放置附件 我想保存附件和它们被丢弃的类别,所以我想调用ajax将数据带到我的模块类中,但我不熟悉ajax,无法处理它 这就是我所做的: js代码(在适当的.tpl中): 您不能直接连接到任何类。您必须使用控制器来执行此操作 Ajax向控制器发送数据 控制器使用类保存数据 控制器将结果返回到浏览器(javascript)您
您不能直接连接到任何类。您必须使用控制器来执行此操作 Ajax向控制器发送数据 控制器使用类保存数据
控制器将结果返回到浏览器(javascript)您不能直接连接到任何类。您必须使用控制器来执行此操作 Ajax向控制器发送数据 控制器使用类保存数据
控制器返回结果到浏览器(javascript)最终我得到了解决方案,也许你们中的一个将来会遇到这个问题 .tpl中的我的代码:
$( ".ui-state-default" ).draggable();
$( ".droptrue" ).droppable({
drop: function( event, ui ) {
//add <option> tag when an attachment is dropped to category's select
$(event.target).append('<option value="' + ui.draggable.attr('id') + '" selected>'+ui.draggable.text()+'</option>');
$('#selectAttachment1').append('<option value="' + ui.draggable.attr('id') + '" selected>'+ui.draggable.text()+'</option>')
//remove the <li> wich contained the attachment data
ui.draggable.fadeOut("slow").remove();
var val = $('#categoryAttachmentArr').val();
//make a serialize() type array
$('#categoryAttachmentArr').val(val + $(this).attr('id') + "=" + ui.draggable.attr('id') +"&");
var value = $('#arrayAttachments').val();
var tab = value.split(',');
for (var i=0; i < tab.length; i++)
if (tab[i] == ui.draggable.attr('id')){
return false;
}
$('#arrayAttachments').val(value+ui.draggable.attr('id')+',');
}
});
$('#submitCategories').click(function(e){
var array = $('#categoryAttachmentArr').val()
$.ajax({
url: '../modules/adjuntos/ajax-call.php',
data: {
action: 'handlearray',
token:new Date().getTime(),
cat: array
},
method: 'POST',
success:function(data){
$('#result').html(data);
}
});
});
这种方式很有魅力,使代码更具可伸缩性最终我找到了解决方案,也许你们中的一个人将来会遇到这个问题 .tpl中的我的代码:
$( ".ui-state-default" ).draggable();
$( ".droptrue" ).droppable({
drop: function( event, ui ) {
//add <option> tag when an attachment is dropped to category's select
$(event.target).append('<option value="' + ui.draggable.attr('id') + '" selected>'+ui.draggable.text()+'</option>');
$('#selectAttachment1').append('<option value="' + ui.draggable.attr('id') + '" selected>'+ui.draggable.text()+'</option>')
//remove the <li> wich contained the attachment data
ui.draggable.fadeOut("slow").remove();
var val = $('#categoryAttachmentArr').val();
//make a serialize() type array
$('#categoryAttachmentArr').val(val + $(this).attr('id') + "=" + ui.draggable.attr('id') +"&");
var value = $('#arrayAttachments').val();
var tab = value.split(',');
for (var i=0; i < tab.length; i++)
if (tab[i] == ui.draggable.attr('id')){
return false;
}
$('#arrayAttachments').val(value+ui.draggable.attr('id')+',');
}
});
$('#submitCategories').click(function(e){
var array = $('#categoryAttachmentArr').val()
$.ajax({
url: '../modules/adjuntos/ajax-call.php',
data: {
action: 'handlearray',
token:new Date().getTime(),
cat: array
},
method: 'POST',
success:function(data){
$('#result').html(data);
}
});
});
这种方式很有魅力,使代码更具可伸缩性谢谢您的回答!!所以我必须创建一个新的控制器,或者只需要创建一个新的php文件来处理这个问题。或者可能使用实际的admincontroller(例如产品控制器)。你能给我举个例子吗?你可以在你的模块中使用定制(前台/管理员)控制器,或者在你的页面上使用可用的钩子来处理你的ajax进程。推荐第一种方式。谢谢回答!!所以我必须创建一个新的控制器,或者只需要创建一个新的php文件来处理这个问题。或者可能使用实际的admincontroller(例如产品控制器)。你能给我举个例子吗?你可以在你的模块中使用定制(前台/管理员)控制器,或者在你的页面上使用可用的钩子来处理你的ajax进程。建议采用第一种方法。
$( ".ui-state-default" ).draggable();
$( ".droptrue" ).droppable({
drop: function( event, ui ) {
//add <option> tag when an attachment is dropped to category's select
$(event.target).append('<option value="' + ui.draggable.attr('id') + '" selected>'+ui.draggable.text()+'</option>');
$('#selectAttachment1').append('<option value="' + ui.draggable.attr('id') + '" selected>'+ui.draggable.text()+'</option>')
//remove the <li> wich contained the attachment data
ui.draggable.fadeOut("slow").remove();
var val = $('#categoryAttachmentArr').val();
//make a serialize() type array
$('#categoryAttachmentArr').val(val + $(this).attr('id') + "=" + ui.draggable.attr('id') +"&");
var value = $('#arrayAttachments').val();
var tab = value.split(',');
for (var i=0; i < tab.length; i++)
if (tab[i] == ui.draggable.attr('id')){
return false;
}
$('#arrayAttachments').val(value+ui.draggable.attr('id')+',');
}
});
$('#submitCategories').click(function(e){
var array = $('#categoryAttachmentArr').val()
$.ajax({
url: '../modules/adjuntos/ajax-call.php',
data: {
action: 'handlearray',
token:new Date().getTime(),
cat: array
},
method: 'POST',
success:function(data){
$('#result').html(data);
}
});
});
<?php
//load ps config
require_once(dirname(__FILE__).'../../../config/config.inc.php');
require_once(dirname(__FILE__).'../../../init.php');
require_once('adjuntos.php');
//adjuntos.php is the name of my module main file
if(Tools::getIsset('token') && Tools::getIsset('action'))
{
$mp = new Adjuntos;
echo $mp->handleArray();
}
public static function handleArray()
{
$html = '';
$array = Tools::getValue('cat');
$arrayExplode = explode("&", $array);
foreach($arrayExplode as $value)
{
$finalArr = explode("=", $value);
if (!CategoryAttachment::postProcess($finalArr))
{
$html .= '<p style="color:red;>Fallo</p>"';
}
}
$html .= '<p style="color:green;>Correcto</p>"';
return $html;
}
public static function postProcess($finalArr)
{
return Db::getInstance()->execute(
'UPDATE ps_attachment SET id_category = '.$finalArr[0].' WHERE id_attachment = '.$finalArr[1]
);
}//end