Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.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的值,prestashop 1.6_Javascript_Php_Jquery_Ajax_Prestashop 1.6 - Fatal编程技术网

Javascript 处理<;选择>;模块类中带有ajax的值,prestashop 1.6

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)您

我正在开发一个ps模块,它允许您将产品附件分类,并在产品首页显示它们

我在附件中使用了一个可拖动列表,当您将它们放到类别中时,它会变成一个选项标记,每个类别都有一个选择标记,用于放置附件

我想保存附件和它们被丢弃的类别,所以我想调用ajax将数据带到我的模块类中,但我不熟悉ajax,无法处理它

这就是我所做的:

js代码(在适当的.tpl中):


您不能直接连接到任何类。您必须使用控制器来执行此操作

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