PHP json_encode ve javascript fonksiyonları

5 Cevap php

PHP bir JSON nesne içine bir javascript işlevi kodlamak gerekir.

Bu:

$function = "function(){}";
$message = "Hello";

$json = array(   
      'message' => $message,
      'func' => $function
);
echo json_encode($json);

çıkışlar:

{"message":"Hello","func":"function(){}"}

Ne istiyorum:

{"message":"Hello","func":function(){}}

Ben json_encode ile yapabilir miyim?

5 Cevap

Jani dediği gibi, bu JSON doğrudan mümkün değildir, ancak bu yardımcı olabilir size: http://solutoire.com/2008/06/12/sending-javascript-functions-over-json/

No JSON spec işlevleri desteklemez. Bir JSON gibi formatında çıktı o kendi kodunuzu yazabilirsiniz ve o olsa iyi çalışması gerekir.

Kendi JSON kodlayıcı yazmak istemiyorsanız size Zend_Json , the JSON encoder for the Zend Framework. It includes the capability to cope with JSON expressions için çare olabilir.

Aşağıda aradığınızı tam değil ama yardımcı olabilir:

jQuery.ajax({
    url: url,
    type: "POST",
    dataType: "json",
    data: ({
        method: 'mypage' + target,
        prop: value,

    }),
    beforeSend: function() {

    },
    success: function(data) {

        //To change the value of a property in your json object just do this : 
        // ps : data contain a json object (json_decode() in php for example) 

        data.table.draw_data.formatter = function() {return this.y;}

        my_fct(data); // now 'formatter' contains my function :)

    },
    error: function(jqXHR, textStatus, errorThrown) {
        console.log(JSON.stringify(jqXHR));
        console.log("AJAX error: " + textStatus + ' : ' + errorThrown);
    }
});

Umarım yardımcı olur :)

Eğer json_encode ile bunu yapamazsınız ama u javascript sonra bunu yapabilirsiniz

json = {"message":"Hello","func":"function(){ alert(this.message) }"}

javascript:

eval('json.func = '+json.func);

çağrı:

json.func();