Tôi đang cố gắng tải một hình ảnh (được tạo bằng PHP) với jQuery và chuyển một vài biến với nó (ví dụ: picture.php?user=1&type=2&color=64
). Đó là phần dễ dàng.Tự động tải hình ảnh với các thông số GET khác nhau
Phần khó là tôi đã thả xuống cho phép tôi chọn nền (tham số kiểu) và tôi sẽ có đầu vào ví dụ để chọn màu.
Here're những vấn đề tôi đang phải đối mặt:
- Nếu một dropdown/input đã không được xúc động, tôi muốn rời bỏ nó ra khỏi URL.
- Nếu một menu thả xuống/đầu vào đã được chạm vào, tôi muốn đưa nó vào url. (Điều này sẽ không hoạt động bằng cách thêm một biến "
&type=2
" vào chuỗi đã tồn tại từ trước như thể tôi chạm vào menu thả xuống/nhập nhiều lần chúng sẽ chồng lên nhau (&type=2&type=2&type=3
)). - Khi thêm biến ("
&type=2
" - xem mã bên dưới) vào URL đã tồn tại trước, mã & biến mất (nó trở thành như sau: "signature.php?user=1type=2
").
Dưới đây là các mã cho jQuery:
<script>
var url = "signatureload.php?user=<?php echo $_SESSION['sess_id']; ?>";
$(document).ready(function() {
window.setTimeout(LoadSignature, 1500);
});
$("#signature_type").change(function() {
url += "&type="+$(this).val();
LoadSignature();
});
function LoadSignature()
{
$("#loadingsignature").css("display", "block");
$('#loadsignature').delay(4750).load(url, function() {
$("#loadingsignature").css("display", "none");
});
}
</script>
Dưới đây là đoạn code mà tôi tải hình ảnh:
<div id="loadsignature">
<div id="loadingsignature" style="display: block;"><img src="img/loading-black.gif" alt="Loading.."></div>
</div>
Tôi không biết làm thế nào hơn nữa hơn tôi có thể giải thích vấn đề của tôi. Nếu bạn có bất kỳ nghi ngờ nào hoặc cần thêm mã, vui lòng cho tôi biết.
Cảm ơn sự giúp đỡ của bạn!
EDIT:
Dưới đây là các mã hiện tại:
<script>
var url = "signatureload.php?user=<?php echo $_SESSION['sess_id']; ?>";
$(document).ready(function() {
window.setTimeout(LoadSignature, 1500);
});
$("#signature_type").change(function() {
url = updateQueryStringParameter(url, 'type', $(this).val());
LoadSignature();
});
function LoadSignature()
{
$("#loadingsignature").css("display", "block");
$('#loadsignature').delay(4750).load(url, function() {
$("#loadingsignature").css("display", "none");
});
}
function updateQueryStringParameter(uri, key, value)
{
var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i"),
separator = uri.indexOf('?') !== -1 ? "&" : "?",
returnUri = '';
if (uri.match(re))
{
returnUri = uri.replace(re, '$1' + key + "=" + value + '$2');
}
else
{
returnUri = uri + separator + key + "=" + value;
}
return returnUri;
}
</script>
EDIT2:
Dưới đây là các mã cho signatureload.php
<?php
$url = "signature.php?";
$count = 0;
foreach($_GET as $key => $value)
{
if($count > 0) $url .= "&";
$url .= "{$key}={$value}";
}
echo "<img src='{$url}'></img>";
?>
Bạn vẫn gặp sự cố? Vẫn không & trong url được tạo? Mã hiện tại trông như thế nào khi được tạo? (đó không phải là mã phía máy chủ) – NiKiZe
@NiKiZe @noam signatureload.php tạo mã số với trợ giúp từ các tham số và đây là kết quả đầu ra từ nó sau khi tôi đã thay đổi lựa chọn trong menu thả xuống: '' –
Nhưng điều này là tập lệnh .php, nó trông như thế nào khi bạn xem nguồn trong trình duyệt? (Tôi muốn biết nơi & bị mất, là nó khi trang được tạo ra hoặc là nó cái gì khác khi javascript được thực hiện) – NiKiZe