Debuguję ten ajax od dłuższego czasu. Mam to w moim pliku jQuery:json_encode nie działa z łańcuchem html jako wartością
$("#typeForm").ajaxForm({
success : function(html){
alert(html);
}).submit();
Wymaga service.php, aw nim mam to:
$data = array('upload_data' => $this->upload->data());
$str = "<div style='position:relative'><img src='/assets/ui/success.png' /><span style='position:relative;top:-15px;'>Nachricht empfangen!</span></div>";
echo json_encode(array('file_name' => $data['upload_data']['file_name'], 'prompt' => $str));
To nie zadziała. Ale zastępując $str
do $str = "HELLO WORLD";
jQuery ostrzega, co powinienem oczekiwać. Co wydaje się być problemem?
EDIT:
Oto screenie wyjścia:
Czyni alarmy, ale jeśli mogę zmodyfikować moje jQuery w tym:
$("#typeForm").ajaxForm({
success : function(html){
var obj = $.parseJSON(html);
alert(obj);
}).submit();
wtedy robi w ogóle nic, nawet ostrzegając.
Zrobiłem var_dump na json_encode
I tu jest wysypisko, to wygląda jak zniekształconego JSON:
string(214) "{"file_name":"cde595988d386529909ce5a8fe3a6d6f.png","prompt":"<div style="position:relative;"><img src="\/assets\/ui\/success.png" \=""><span style="position:relative;top:-15px;">Nachricht empfangen!<\/span><\/div>"}"
</span></div>
Oto pełna treść service.php
class Service extends CI_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
$filename = 'uploadfile';
$config['upload_path'] = './uploads/temp';
$config['allowed_types'] = 'jpg|png|gif|doc|docx|pdf|ppt|pptx|xls|xlsx|bmp';
$config['max_size'] = '3072';
$config['encrypt_name'] = TRUE;
$config['remove_spaces'] = TRUE;
$this->load->library('upload', $config);
if (!$this->upload->do_upload($filename))
{
$error = array('error' => $this->upload->display_errors());
echo json_encode(array('error' => $error['error']));
}
else
{
$data = array('upload_data' => $this->upload->data());
$file_name = $data['upload_data']['file_name'];
//print_r($data);
//echo json_encode(array('test' => "Hello World"));
$str = "<div style='position:relative;'><img src='/assets/ui/success.png' /><span style='position:relative;top:-15px;'>Nachricht empfangen!</span></div>";
$str2 = json_encode(array("file_name" => $file_name, "prompt" => $str));
//var_dump($str2);
exit(json_encode(array('file_name' => $data['upload_data']['file_name'], 'prompt' => $str)));
}
}
}
Twój JSON wygląda .. .? –
"nie zadziała", masz na myśli to, że wyrzuca błędy? Lub nie wstrzykuje HTML lub ..? –
Jak to "nie działa"? JSON nie może się tym przejmować CO umieścisz w łańcuchu - może to być liczba, może to być tekst, może to być html. to nie ma znaczenia, o ile zasady składni JSON są honorowane. –