JavaScript ve PHP işlevleri

7 Cevap php

O onsubmit JavaScript'den PHP kullanarak bir işlevi çağırmak mümkün mü? Eğer öyleyse kimse bana nasıl yapılabilir olacağını bir örnek verebilir misiniz?

function addOrder(){
    $con = mysql_connect("localhost", "146687", "password");
    if(!$con){
        die('Could not connect: ' . mysql_error())
    }

    $sql = "INSERT INTO orders ((user, 1st row, 2nd row, 3rd row, 4th row)
    VALUES ($session->username,1st variable, 2nd variable, 3rd variable, 4th variable))";

    mysql_query($sql,$con)
    if(mysql_query($sql,$con)){
        echo "Your order has been added";
    }else{
        echo "There was an error adding your order to the databse: " . mysql_error();
    }
}

Ben aramak isteyen am fonksiyon. Onun bir sipariş sistemi, size, istediğiniz ne kadar her öğenin yazın göndermek vurdu ve should tabloya sipariş ekleyin.

7 Cevap

You can not call a PHP function from Javascript...

Javascript bir istemci dili PHP sunucu tarafında ise (o web sayfası aldıktan sonra, Web tarayıcısında idam ediyor) (web sayfası oluşturulmadan önce idam ediyor) olduğunu. Bir başka arama yapmak için hiçbir yolu yoktur.

...but you can get the result of an external PHP script

Web sunucusu üzerinde herhangi bir komut dosyası çağırın ve cevap almak için sağlar xhttprequest adında bir JavaScript işlevi vardır. Yani sorunu çözmek için, bazı metin (ya da XML veya JSON) çıktılar bir PHP komut dosyası oluşturabilir, sonra onu aramak, ve JavaScript ile cevap analiz.

Bu süreç biz AJAX diyoruz, ve kendinizi daha iyi bir araç ile bunu yapmak çok daha kolay. Bir göz JQuery, bu yerleşik AJAX yardımcıları JavaScript kütüphanesini kullanmak için güçlü henüz kolay.

JQuery (istemci tarafı) ile bir örnek:

$.ajax({
   type: "POST", // the request type. You most likely going to use POST
   url: "your_php_script.php", // the script path on the server side
   data: "name=John&location=Boston", // here you put you http param you want to be able to retrieve in $_POST 
   success: function(msg) {
     alert( "Data Saved: " + msg ); // what you do once the request is completed
   }

Eğer AJAX istediğiniz gibi geliyor.

Bu, tek bir cevap için çok büyük bir konu, ama bu gitmeliyiz.

Temelde, JavaScript sunucu üzerinde bir PHP komut dosyası için bir HTTP isteği göndermek ve daha sonra yanıt ile bir şeyler yapacağız. JSON muhtemelen çok öğrenmek isteyeceksiniz şeydir.

Bu JavaScript kullanarak bir PHP işlevi çağırmak için indirectly mümkün. Bu mutlaka Ajax olmak zorunda değildir - diğer insanların zaten söylediğim gibi, istek bir tür yapmak istiyorum gidiyoruz. Bu senkron olabilir. Eğer başarmak için çalışıyoruz tam olarak ne olduğunu bilmeden, burada ben öneririm ne:

  • Formun teslim seçeneği bir olay işleyicisi iliştirmek (veya standart göndermek kullanmak size Ajax kullanmak için gidiyoruz değil)
  • POST veya sayfa adresi sorgu dizesinde ya PHP işlevine geçirilen gerekir herhangi bir parametre kadar paket.
  • (Ya uyumsuz ya göndermek yoluyla) isteği yangın
  • Isteği hedefi olan PHP komut dosyası, $ _ POST parametreleri çekin ya $ _ GET.
  • Eğer parametreler ile ihtiyaç PHP işlevini çağırın.
  • Yanıtı geri yankı ve isteği tamamlar kez gerektiği gibi ayrıştırmak.

Yine, bu biraz genel ama böylece bir sorudur. Umarım bu yönde bir çeşit verir.

Eğer almak için gidiyoruz yakın xajax hangi bir AJAX çağrısına bir PHP işlevi sarın izin verir olacaktır. Ben Zend Framework ile çalışmaya başladı ve çok sert bir OO şekilde uygulamak için bulmadan önce ben onu biraz kullandım.

Eğer düzenli mantığını yapar ve daha sonra AJAX ile tarayıcı (uyarı kutuları, değişim HTML, CSS, vs) yöneten bir ObjectResponse nesnesi döndüren bir PHP işlevi yazmak xajax ile. Sen xajax ile fonksiyonu kayıt ve daha sonra xajax sizin HTML'ın bölüme bazı javascript tükürmek olacaktır.

HTML'nizdeki sadece çağrı oluşturulur ve AJAX ile gerisini halleder xajax javascript fonksiyonu.

Gibi bir şey yapmak isteyeceksiniz:

<form action="add_order.php" method="POST" id="add_order_form">
<!-- all of your form fields -->
<input type='submit' value='Add Order'>
</form>

<script type="text/javascript">
$("#add_order_form").submit(function() {
    var action = $("#add_order_form").attr("action");
    var data = $("#add_order_form").serialize();
    $.post(action, data, function(json, status) {
        if(status == 'success') {
            alert(json.message);
        } else {
            alert('Something went wrong.');
        }
    }, "json"); 
    return false;
});
</script>

Ve sonra add_order.php gibi bir şey adında bir PHP dosyası vardır:

$success = 0;
$con = mysql_connect("localhost", "146687", "password");
if(!$con) {
    $message = 'Could not connect to the database.';
} else {
    // SANITIZE DATA BEFORE INSERTING INTO DATABASE
    // LOOK INTO MYSQL_REAL_ESCAPE_STRING AT LEAST,
    // PREFERABLY INTO PREPARED STATEMENTS
    $query_ok = mysql_query("INSERT INTO `orders` ....");
    if($query_ok) {
        $success = 1;
        $message = "Order added.";
    } else {
        $message = "Unable to save information";
    }
}

print json_encode(array('success' => $success, 'message' => $message));

Bu güzellik çalışması için size, jQuery sitesine gitmek zorunda indirmek ve jquery.js dosyasını içerecektir.

Ben yukarıdaki test değil ama çalışması gerekir. İyi şanslar.

Evet, ajax öğrenmek için başka büyük ve kolay bir öğretici olduğunu:

http://24ways.org/2005/easy-ajax-with-prototype/

Prototip Eğer proje ile uzağa gitti sığınak ve işlevsellik bir sürü dönmek gerekiyorsa ben tavsiye başka bir şeydir.

http://www.prototypejs.org/

İyi şanslar!

Üzgünüz, soru çok temel. Eğer formsubmit Ajax çağırmak istiyorum what PHP işlevine bağlı olarak size yardımcı olmayacaktır. PHP ve JavaScript arasındaki temel (clientside / serverside) farklılıkların farkında mısınız?