X-Cart 4.6 向数据库中的新 table 提交数据时出错
X-Cart 4.6 Error submitting data to new table in db
您好,当用户到达订单确认页面时,我正在尝试将一些数据保存到数据库中新创建的 table 中,但我被卡住了。我知道 AJAX 调用正在与 php 文件通信,因为我可以简单地 console.log 响应(输出)并且我得到了预期的结果(即:echo 'hello')来自 php 文件 - 这里一切都很好。
我还在 init.php.
中注册了新的 table 别名
这是文件 order_message.tpl:
中的 JS 代码
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);
}
});
这是文件 root/newDir/newFile 中的 PHP 代码。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);
}
我可以看到在开发工具中进行了 AJAX 调用,但它输出了这些错误:
- GET https://localhost/site/newDir/index.php 404 (Not Found)
- Not Found
- error
- Not Found
我没有在代码中的任何地方引用这条路径——它不存在——https://localhost/site/newDir/index.php,所以我不确定这里发生了什么。接下来的 3 个错误来自 AJAX 错误方法。并且数据库中没有存储任何数据。
如果我注释掉 "require '../init.php';",我不会收到任何错误,而是得到一长串 html 代码。但是仍然没有数据保存到数据库中。
任何人都可以看出问题所在吗?
非常感谢。
1) 将 newFile.php 脚本移动到常用 cart.php 脚本所在的同一文件夹。
2) 将补丁应用于 PHP 文件
--- 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']);
或在此处下载新版本https://bt.x-cart.com/view.php?id=50556#attachments
3) 更改
行中的 URL
$.ajax({ url: '/newDir/newFile.php',
到新的。使用相对或绝对路径。
您好,当用户到达订单确认页面时,我正在尝试将一些数据保存到数据库中新创建的 table 中,但我被卡住了。我知道 AJAX 调用正在与 php 文件通信,因为我可以简单地 console.log 响应(输出)并且我得到了预期的结果(即:echo 'hello')来自 php 文件 - 这里一切都很好。
我还在 init.php.
中注册了新的 table 别名这是文件 order_message.tpl:
中的 JS 代码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);
}
});
这是文件 root/newDir/newFile 中的 PHP 代码。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);
}
我可以看到在开发工具中进行了 AJAX 调用,但它输出了这些错误:
- GET https://localhost/site/newDir/index.php 404 (Not Found)
- Not Found
- error
- Not Found
我没有在代码中的任何地方引用这条路径——它不存在——https://localhost/site/newDir/index.php,所以我不确定这里发生了什么。接下来的 3 个错误来自 AJAX 错误方法。并且数据库中没有存储任何数据。
如果我注释掉 "require '../init.php';",我不会收到任何错误,而是得到一长串 html 代码。但是仍然没有数据保存到数据库中。
任何人都可以看出问题所在吗?
非常感谢。
1) 将 newFile.php 脚本移动到常用 cart.php 脚本所在的同一文件夹。
2) 将补丁应用于 PHP 文件
--- 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']);
或在此处下载新版本https://bt.x-cart.com/view.php?id=50556#attachments
3) 更改
行中的 URL$.ajax({ url: '/newDir/newFile.php',
到新的。使用相对或绝对路径。