gpt4 book ai didi

javascript - 使用 AJAX 从数据库自动填写表单输入字段

转载 作者:行者123 更新时间:2023-11-29 03:00:27 25 4
gpt4 key购买 nike

无法让它工作,可以使用额外的一双眼睛来发现我做错了什么或可能遗漏了什么。我使用 Joomla 3.3.1 的 RSForm Pro 组件创建了一个表单。该表格的目的是允许用户对我们的产品提出保修 claim 。如果用户需要对产品提出重复 claim ,则会显示一个带有按钮的输入字段,以从数据库中检索数据并自动为用户填写所有者信息。对于提交的每项 claim ,都会生成一个“id”。如果需要提交重复声明,此“id”是用户应输入以检索数据的编号。我有一个运行 onclick 的 ajax 函数,并查找连接到数据库并检索请求信息的 php 文件。

这是ajax...

var ajax = getHTTPObject();

function getHTTPObject()
{
var xmlhttp;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else if (window.ActiveXObject) {
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
} else {
//alert("Your browser does not support XMLHTTP!");
}
return xmlhttp;
}

function updateOwnerInfo()
{
if (ajax)
{
var idValue = document.getElementById("owner_id").value;
if(idValue)
{
var url = "/templates/uma-solar/html/com_rsform/getClaimInfo.php";
var param = "?id=" + escape(idValue);
ajax.open("GET", url + param, true);
ajax.onreadystatechange = handleAjax;
ajax.send(null);
}
}
}

function handleAjax()
{
if (ajax.readyState == 4)
{
ownerarr = ajax.responseText.split(",");

var owner_name = document.getElementById('owner_name');
var owner_address = document.getElementById('owner_address');
var owner_city = document.getElementById('owner_city');
var owner_state = document.getElementById('owner_state');
var owner_country = document.getElementById('owner_country');
var owner_county = document.getElementById('owner_county');
var owner_zip = document.getElementById('owner_zip');
var owner_phone = document.getElementById('owner_phone');
var owner_email = document.getElementById('owner_email');

owner_name.value = ownerarr[0];
owner_address.value = ownerarr[1];
owner_city.value = ownerarr[2];
owner_state.value = ownerarr[3];
owner_country.value = ownerarr[4];
owner_county.value = ownerarr[5];
owner_zip.value = ownerarr[6];
owner_phone.value = ownerarr[7];
owner_email.value = ownerarr[8];
}
}

这是 php...

define( '_JEXEC', 1 );
define('JPATH_BASE', '/var/www/joomla.umasolar.com/');

/* Required Files */
require_once ( JPATH_BASE .'/includes/defines.php' );
require_once ( JPATH_BASE .'/includes/framework.php' );

/* To use Joomla's Database Class */
require_once ( JPATH_BASE .'/libraries/joomla/factory.php' );

/* Create the Application */
$app = JFactory::getApplication('site');
$app->initialise();

//-----process DB query-------
$db = JFactory::getDBO();
$sql='SELECT
owner_name,
owner_address,
owner_city,
owner_state,
owner_county,
owner_country,
owner_zip,
owner_phone,
owner_email
FROM #__rsform_warranty_claim WHERE _id=mysql_real_escape_string($_GET[
"owner_id"])';
$db->setQuery($sql);

//----------------------------
$row = $db->loadObjectList();
echo $row['owner_name'] . ", " . $row['owner_address'] . ", " . $row['owner_city'] . ", " . $row['owner_state'] . ", " . $row['owner_country'] . ", " . $row['owner_county'] . ", " . $row['owner_zip'] . ", " . $row['owner_phone'] . ", " . $row['owner_email'];

该表格未公开,因此这里有一些可能有用的屏幕截图...

img1

img2

这里是填写输入字段的文本,看起来只是 404,但在标题中显示 1064 - 错误:1064...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-gb" lang="en-gb" dir="ltr">

<head>
<title>1064 - Error: 1064</title>
<link rel="stylesheet" type="text/css" href="/templates/uma-solar/html/com_rsform/templates/uma-solar/css/style.css" />
<link rel="stylesheet" type="text/css" href="/templates/uma-solar/html/com_rsform/templates/uma-solar/bootstrap/css/bootstrap.css" />
<link rel="stylesheet" type="text/css" href="/templates/uma-solar/html/com_rsform/templates/uma-solar/bootstrap/css/bootstrap-responsive.css" />
<script type="text/javascript" src="/templates/uma-solar/html/com_rsform/templates/uma-solar/bootstrap/js/bootstrap.js"></script>
</head>

<body class="error">
<center>
<div class="errorbox">
<div class="block">
<h1>404</h1>
<h3>Page not found</h3>
</div>
<p>Sorry! The page you are looking for cannot be found. Please use the provided search box to find what you are looking for

错误日志中没有使用此代码生成的错误。在 PHP 代码中找出所需 Joomla 文件的正确路径时遇到了一些问题,但看来我已解决该问题。任何和所有帮助将不胜感激!

最佳答案

按照 Joomla 关于使用 JDatabase 选择数据的说明,终于让它工作了。我确信这可以使用标准 SQL 语句工作,但 Joomla 有时会很挑剔,而且更容易遵循它们的规则。 AJAX 很好,但这是我将 PHP 更改为...

define( '_JEXEC', 1 );
define('JPATH_BASE', '../../../../');

//Required Joomla Files
require_once ( JPATH_BASE .'/includes/defines.php' );
require_once ( JPATH_BASE .'/includes/framework.php' );

//Connect to Joomla's Database Class
require_once ( JPATH_BASE .'/libraries/joomla/factory.php' );

//Create the Application
$app = JFactory::getApplication('site');
$app->initialise();
$input = $app->input;
$id = $input->getInt('id');

//Connect to db
$db = JFactory::getDBO();

//Create new query object
$query = $db->getQuery(true);
$query->select($db->quoteName(array('owner_name', 'owner_address', 'owner_city', 'owner_state', 'owner_county', 'owner_country', 'owner_zip', 'owner_phone', 'owner_email')));
$query->from($db->quoteName('#__rsform_warranty_claim'));
$query->where($db->quoteName('_id') . '=' . $db->quote($id));

//Reset the query using our newly populated query object
$db->setQuery($query);

//Get a single record from the DB table
$row = $db->loadAssoc();
echo $row['owner_name'] . ", " . $row['owner_address'] . ", " . $row['owner_city'] . ", " . $row['owner_state'] . ", " . $row['owner_country'] . ", " . $row['owner_county'] . ", " . $row['owner_zip'] . ", " . $row['owner_phone'] . ", " . $row['owner_email'];

关于javascript - 使用 AJAX 从数据库自动填写表单输入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24516096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com