Jquery kullanarak sunucu tarafı işlevlerini değiştirin

3 Cevap php

I am developing one website using cakephp and jquery technologies. Server-side there are some functions which handles sql queris.

Şartının olarak ben jquery AJAX çağrısı kullanarak istemci tarafında sunucu tarafı işlevlerini değiştirmek istiyorum.

E.g.: Aşağıda kullanıcıların bilgilerini değiştirmek için sunucu tarafında işlevdir.

function modifyUser(username,userid) {
  //update query statements
}

Then jquery AJAX call will be like this :

$.ajax({
  url: 'users/modiyUser',
  success: function() {
    alert("Updation done") or any statements.
  }
});

ve ben müşteri giriş kriterlere bağlı yani sunucu tarafı işlevi yukarıda değiştirmek istiyorum.

$.ajax({
 function users/modiyUser(username,userid) {
    // I will write here any other statements which gives me some other output.
 }
});

AJAX çağrısı sözdizimi Üstü i tüm yapmak ne çalışıyorum anladım düşünüyorum mevcut olmayabilir, ama I simply wants to modify/override server side functions on client side.

Yukarıda belirtilen gereksinimi gidermek için herhangi bir yolu var olduğunu bana bildirin lütfen.

Adavance Teşekkürler

3 Cevap

Doğrudan istemciden bir PHP fonksiyonları diyemezsin. Sen sadece bir URI için bir HTTP isteği yapabilirsiniz.

URI PHP komut dosyası çalıştırmak belirler. Girdi $_GET, $_POST aracılığıyla alınabilir, ve $_COOKIE (diğerleri arasında, ancak bu temel olanlarıdır).

Ya her bir fonksiyon için ayrı ayrı komut yazmak veya kullanıcı girişi dayalı ne yapacağını belirleyebilirsiniz.

Bunu yapmak için ayrı bir PHP dosyası bir sunucu tarafı işlevi var, ve değişiklik yapmak için ilk bu işlevi bir AJAX çağrısı çağrı yapabilir. Ancak sunucu tarafı kod istemci tarafı değişiklikleri sadece mümkün değildir.

Bunu yapmak için neden isteyeyim ben aslında olsa, hayal bile edemiyorum.

neden bir işlevi geçersiz??

i bu önerebilirsiniz?

in PHP

try {
  // functions here....
  function modifyUser($username,$userid) {
     //update query statements
     if(!is_string($username)) throw new Exception("argument to " . __METHOD__ . " must be a string");
     if(!is_string($userid)) throw new Exception("argument to " . __METHOD__ . " must be a string");
     // do some modification codes....
  }
  function delete($userid){
      // do stuff blah blahh...
  }

  // $_POST or $_GET etc. here
  if(isset($_GET["modify"])){ // I make use of get for simplicity sake...
     $username = $_GET['username'];
     $userid = $_GET['userid'];
     modifyUser($username,$userid);
     $ret = array();
     $ret["error"] = false;
     $ret["msg"] = "$username has been modified";
     echo json_encode($ret);
  } else if(isset($_GET["delete"])) {
     $userid = $_GET['userid'];
     delete($userid);
     $ret = array();
     $ret["error"] = false;
     $ret["msg"] = "$username has been deleted";
     echo json_encode($ret);
  }else {
 // the client asked for something we don't support
 throw new Exception("not supported operation");
  }

}
catch(Exception $e){
    // something bad happened
    $ret = array();
    $ret["error"] = true;
    $ret["msg"] = $e->getMessage();
    echo json_encode($ret);
}

jQuery ajax içinde

$.ajax({
    url: 'ajax.php',
    data : { modify : true, // sample for modify... can also be delete : true,
        username : $('#username').val(),
        userid : $('#userid').val() },
    type: 'GET',
    dataType: 'json',
    timeout: 1000,
    error: function(){
        alert('error in connection');
    },
    success: function(data){
        if(data.error)
            alert('Something went wrong: ' + data.msg);
        else {
            alert('Success: ' + data.msg);
        }    

    }
});