phpmysqlajaxx-cart

X-Cart 4.6 Error submitting data to new table in db


Hi I am trying to save some data, when a user reaches the order confirmation page, to a newly created table in the database and I am stuck. I know the AJAX call is communicating with the php file since I can simply console.log the response(output) and I get what is expected (Ie.: echo 'hello') from the php file - so all good here.

I also registered the new table alias inside the init.php.

Here is the JS code from the file order_message.tpl:

var newData = {
   "one":"test one",
   "two":"test two"
};

$.ajax({ url: '/newDir/newFile.php',
    data: {
        dataToSend: newData
    },
    type: 'post',
    success: function(output){
        console.log(output);
    },
    error: function(xhr, textStatus, error){
        console.log(xhr.statusText);
        console.log(textStatus);
        console.log(error);
    }
});

Here is the PHP code from the file root/newDir/newFile.php:

require '../init.php';
require '../include/func/func.db.php';

if(isset($_POST['dataToSend']) && !empty($_POST['dataToSend'])) {
   $ssData = json_decode($_POST['dataToSend']);
   myFunc($ssData);
} else {
   die( header('Location: ../404.html') );
}

function myFunc($dt){
   $toSaveData = array(
      'one' => $dt->one,
      'two' => $dt->two
   );
   func_array2insert ('my_new_table', $toSaveData);
}

I can see the AJAX call being made in the dev tools, but its outputting these errors:

I did not reference anywhere in the code this path - which does not exist - https://localhost/site/newDir/index.php, so I'm not sure what is happening here. The next 3 errors are coming from the AJAX error method. And in the database no data is being stored.

If I comment out "require '../init.php';" I get no errors, but instead get a long string of html code. But still no data saved to the database.

Anyone can see what the issue may be?

Thanks a lot.


Solution

  • 1) Move the newFile.php script to the same folder where the stock cart.php script is located.

    2) Apply the patch to the PHP file

    --- old.php 2019-03-14 15:19:10.162222071 +0400
    +++ new.php 2019-03-14 15:25:41.160826722 +0400
    @@ -1,5 +1,11 @@
    -require '../init.php';
    -require '../include/func/func.db.php';
    +require __DIR__.'/top.inc.php';
    +
    +define('QUICK_START', true);
    +define('SKIP_CHECK_REQUIREMENTS.PHP', true);
    +define('USE_SIMPLE_SESSION_INTERFACE', true);
    +define('USE_SIMPLE_DB_INTERFACE', true);
    +
    +require __DIR__.'/init.php';
    
     if(isset($_POST['dataToSend']) && !empty($_POST['dataToSend'])) {
        $ssData = json_decode($_POST['dataToSend']);
    

    or download the new version here https://bt.x-cart.com/view.php?id=50556#attachments

    3) Change the URL in the line

    $.ajax({ url: '/newDir/newFile.php',
    

    to the new one. Use relative or absolute path.