MySQL baz temel metin dizesi saklamak için jQuery kullanarak?

1 Cevap php

Could someone point me in the right direction here? Basically, I've got this jQuery code snippet:

$('.bggallery_images').click(function () {
    var newBG = "url('" + $(this).attr('src');
    var fullpath = $(this).attr('src');
    var filename = fullpath.replace('img/Bakgrunner/', '');

    $('#wrapper').css('background-image', newBG);

    // Lagre til SQL
    $.ajax({
        url: "save_to_db.php",
        // The url to your function to handle saving to the db
        data: filename,
        dataType: 'Text',
        type: 'POST',
        // Could also use GET if you prefer
        success: function (data) {
            // Just for testing purposes.
            alert('Background changed to: ' + data);
        }

    });

});

Ben belli bir düğmesine bastığınızda yürütülüyor. Yani bir tıklatma işleyicisi içinde aslında.

Ben bu doğru anlamak ben sadece tıkladım ve şeritler görüntü yüzden ben sadece dosya adı ile sonuna kadar eğer, bu pasajı kaynağını alır. Ben bir uyarı (filename) yaparsanız, ben sadece dosya olsun. Yani bu Tamam çalışıyor.

Ama sonra, "save_to_db.php" adlı bir php dosyasına bir ajax arama yapar ve verileri gönderir: dosyaadı. Bu doğru değil mi? Sonra, bir uyarı + verilerini yapan bir geri arama yapar.

Bu kadar doğru görünüyor mu?

Benim php dosyası gibi görünüyor neden:

<?php
require("dbconnect2.php");
$uploadstring = $_POST['filename'];
$sessionid = $_SESSION['id'];
echo ($sessionid);
mysql_query("UPDATE brukere SET brukerBakgrunn = '$uploadstring' WHERE brukerID=" .$_SESSION['id']);
mysql_close(); 
?>

When I click the image, the jQuery snippet fires and I get the results of this php file as output for the alert box. I think that the variables somehow are empty. Because notice the echo($sessionid); which is a variable I've created just to test what the session ID is. And it returns nothing. What could be the issue here?

Düzenleme: Ben sadece yanı sıra $ uploadstring değişken echo çalıştı ve aynı zamanda hiçbir şey döndürür. JQuery pasajı bile php dosyasına üzerinde değişken geçemezse gibi mi?

1 Cevap

Sen just dosya göndermek için çalışıyoruz, ancak PHP kodu adlandırılmış bir form alanını alınırken ediyoruz. Yani bir adlandırılmış form alanını göndermeniz gerekir:

Bu gibi ajax çağrısı değiştirin:

$.ajax({
    url: "save_to_db.php",
    // The url to your function to handle saving to the db
    data: {filename: filename}, // <= Change #1 (give jQuery a simple object)
    dataType: 'text',           // <= Change #2 ('text', not 'Text')
    type: 'POST',
    // Could also use GET if you prefer
    success: function (data) {
        // Just for testing purposes.
        alert('Background changed to: ' + data);
    }

});

Sizin PHP komut artık filename, değeri sizin filename Javascript değişken gelen adında bir POST varible dile alacaksınız. (Ayrıca ... $.post to do this, but it's just a wrapper for ajax yine de kullanabilirsiniz)

ajax çağrı içine basit bir nesneyi geçen sunucuya alanları göndermek için en kolay yoludur. jQuery nesne almak ve nesnenin anahtarlarını ve alan adlarını kullanarak (sizin için kaçan tüm yapıyor) URL-kodlanmış form verilerini yaratacaktır. Yani örneğin, bunu bu nesneyi verirsem:

data: {a: 1, b: "testing one two three", c: 3}

... Bu URL-kodlanmış verileri gönderir:

a=1&b=testing+one+two+three&c=3

(Bizim için kodlar nasıl unutmayın.) ajax docs (but beware, at present what the docs say about array handling is wrong; see this bug report in Daha fazla bilgi için).