我正在使用PHP,JavaScript Json來填充表單中的字段。一切工作正常,直到我將我的joomla從3.1.5升級到3.2.2。我認爲它與jquery衝突。如何在Joomla中使用jquery noconflict
所以這裏我使用的代碼。如果我使用這個獨立版本,它的工作原理絕對好,但在Joomla中無效。
請幫我解決這個jQuery的衝突。
<?php
try {
$objDb = new PDO('mysql:host=localhost;dbname=prod', 'xxx', 'xxxx');
$objDb->exec('SET CHARACTER SET utf8');
$sql = "SELECT id, Master, Area, Rate1
FROM `products`
WHERE `Master` = 0";
$statement = $objDb->query($sql);
$list = $statement->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
echo 'There was a problem';
}
?>
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8" />
<link href="/1/finished/css/core.css" rel="stylesheet" type="text/css" />
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<script>
function sendForm() {
document.myform.submit()
}
</script>
<div id="wrapper">
<form id="myform" action="/index.php/it-hardware-disposal-cost-upto-25-items" method="post">
<select name="Area" id="Area" class="update">
<option value="">Select Your Location</option>
<?php if (!empty($list)) { ?>
<?php foreach($list as $row) { ?>
<option value="<?php echo $row['id']; ?>">
<?php echo $row['Area']; ?>
</option>
<?php } ?>
<?php } ?>
</select>
<select name="County" id="County" class="update"
disabled="disabled">
<option value="">----</option>
</select>
<select name="City" id="City" class="update"
disabled="disabled" onchange="this.form.submit()">
<option value="">----</option>
</select>
</form>
</div>
<script src="/1/finished/js/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="/1/finished/js/core.js" type="text/javascript"></script>
</body>
</html>
參見下面是core.js我堅信,問題是在這裏,可能是因爲在一些的Joomla其他代碼是相互衝突的。
var formObject = {
run : function(obj) {
if (obj.val() === '') {
obj.nextAll('.update').html('<option value="">----</option>').attr('disabled', true);
} else {
var id = obj.attr('id');
var v = obj.val();
jQuery.getJSON('/1/finished/mod/update.php', { id : id, value : v }, function(data) {
if (!data.error) {
obj.next('.update').html(data.list).removeAttr('disabled');
} else {
obj.nextAll('.update').html('<option value="">----</option>').attr('disabled', true);
}
});
}
}
};
$(function() {
$('.update').live('change', function() {
formObject.run($(this));
});
});
因此,Core.js使用Jquery.json來使用update.php填充數據,該數據有以下代碼。
<?php
if (!empty($_GET['id']) && !empty($_GET['value'])) {
$id = $_GET['id'];
$value = $_GET['value'];
try {
$objDb = new PDO('mysql:host=localhost;dbname=xxxx', 'xxx', 'xxx');
$objDb->exec('SET CHARACTER SET utf8');
$sql = "SELECT id, Master, Area
FROM `products`
WHERE `master` = ?";
$statement = $objDb->prepare($sql);
$statement->execute(array($value));
$list = $statement->fetchAll(PDO::FETCH_ASSOC);
if (!empty($list)) {
$out = array('<option value="">Select Your Area, City</option>');
foreach($list as $row) {
$out[] = '<option value="'.$row['id'].'">'.$row['Area'].'</option>';
}
echo json_encode(array('error' => false, 'list' => implode('', $out)));
} else {
echo json_encode(array('error' => true));
}
} catch(PDOException $e) {
echo json_encode(array('error' => true));
}
} else {
echo json_encode(array('error' => true));
}
?>
如果您將jQuery安裝到Joomla上,那麼可能是這樣。此外,你應該已經在谷歌或堆棧溢出搜索:http://api.jquery.com/jQuery.noConflict/ – SparoHawk
SparoHawk,如果我知道如何解決它;我不會在這裏發佈求助。你能否發現我應該做些什麼來解決它? – user2107349
你能發佈你得到的錯誤嗎? – SparoHawk