首页 > 解决方案 > 从 AJAX 请求调用 PHP 类方法

问题描述

我试图从 AJAX 实例化和执行自定义类方法,但返回 500 代码错误,这里是 ajax:

我希望 ajax 调用从给定的 xml 创建一个数组,这按预期工作,之后我需要从 SQL 查询创建一个数组并执行一个插入语句,并使用我必须调用的 SQL 数组中的数据一个类方法,我ḿ制作包含但不起作用

function BorraEmple(TipoDocu,NumePers)
{
    if(confirm("Eliminar Empleado ("+TipoDocu+" "+NumePers+"), Desea Continuar?"))
    {
        var CodiDocu =$("#CmbCodiDocu").val();
        var NumeDocu =$("#TxtNumeDocu").val();
        $.ajax({
         type: 'POST',
         url: 'borraemple.php',
         data: "Accion=BorraEmple"+"&TipoDocu="+TipoDocu+"&NumePers="+NumePers+"&CodiDocu="+CodiDocu+"&NumeDocu="+NumeDocu,
         dataType: 'text',
         async: false,
         success: function(data)
         {
           setTimeout(function(){
           location.reload(); 
            }, 2000);
           if(/ErrorSQL/.test(data))
             alert("Error al consultar el registro, contacte a soporte tecnico");
           else
           {
                if(data!='')
                    alert(data);
           }
           alert("El registro ha sido eliminado");
         },
         error: function(xhr, ajaxOptions, thrownError) {
        alert(xhr.status);
        alert(thrownError);
         }
       });
    }
}

这是php:

<?php
include_once(SIH_PATH.'clases/FES/nominajuste.class.php');
if($_POST[Accion]=='BorraEmple'){
    $TipoDocu=$_POST[TipoDocu];
    $NumePers=$_POST[NumePers];
    $CodiDocu=$_POST[CodiDocu];
    $NumeDocu=$_POST[NumeDocu];

if(strlen($MesInve)==1)
  $MesInve2='0'.$MesInve;
else
  $MesInve2=$MesInve;
 $DocuApli=docuapli($CodiDocu);
 $Cond='';
 if($DocuApli==124){
  $EnviNomi = parametros('EnviNomi', 2);
  if($EnviNomi==1){
    function getArray(){
        $doc = new DOMDocument();
        $doc->preserveWhiteSpace = true;
        $doc->load('NominaIndividualDeAjusteElectronicaXSDV1.0.xsd');
        $doc->save('a.xml');
        $xmlfile = file_get_contents('a.xml');

        $parseObj = str_replace($doc->lastChild->prefix.':',"",$xmlfile); 
        $doc->doc->textContent;

        $ob= simplexml_load_string($parseObj);
                    $json  = json_encode($ob, JSON_PRETTY_PRINT);
                    $arrayNomiElect = json_decode($json, true);

        return $arrayNomiElect;
    }

    $sqlNumePers = "SELECT CodiDocu, NumeDocu, CodiInst, CodiAno, CodiMes, TipoDocu, NumePers FROM DetaNomi WHERE CodiDocu='$CodiDocu' AND NumeDocu='$NumeDocu' AND NumePers=$NumePers GROUP BY TipoDocu,NumePers";
    $resNumePers = query($sqlNumePers,2);
    $ManeNoEl = parametros('ManeNoEl');

    foreach($resNumePers as $key => $value) {

      $datos = array(
        'CodiDocu'         => $value['CodiDocu'],
        'NumeDocu'         => $value['NumeDocu'],
        'CodiInst'         => $value['CodiInst'],
        'CodiAno'          => $value['CodiAno'],
        'CodiMes'          => $value['CodiMes'],
        'TipoDocu'         => $value['TipoDocu'],
        'NumePers'         => $value['NumePers'],
        'arraybase'         => getArray()
      );

      $sqlIns="INSERT INTO NomiElec (CodiDocu, NumeDocu, CodiInst, CodiAno, CodiMes, TipoDocu, NumePers) VALUES ('$datos[CodiDocu]','$datos[NumeDocu]','$datos[CodiInst]','$datos[CodiAno]','$datos[CodiMes]','$datos[TipoDocu]','$datos[NumePers]')";
      //echo $sqlIns; exit();
      query($sqlIns);

      if($ManeNoEl == 1){
      $nominaElect = new NominaAjuste($datos);
      $nominaElect->getEstructura('E');
      }
    }
 }
 else
    $retorno='';

 echo $retorno;
}

我已经在没有 ajax 的情况下测试了功能,一切正常,我对 ajax 不是很熟悉,不知道我是否做得很好..

谢谢。

标签: phpjqueryajax

解决方案


推荐阅读