JSONP语法错误:缺失;在声明之前

时间:2014-09-15 09:51:50

标签: javascript codeigniter jsonp

我在控制器上有一个codeigniter函数,它可以获取并检查我的模板的图像。

我放了一个id ="模板"在我的缩略图bootstrap div id模板与我的脚本代码一起使用之后。

目前,当我选择主题时,我会遇到一个萤火虫错误

错误弹出

SyntaxError: missing ; before statement
OK
{"image":"<img src=\\\"http:\/\/localhost\/codeigniter\/codeigniter-cms\/image\/templates\/default.png\\\" alt=\\\"\\\"\/>"}

控制器图像功能

public function template() {
  $this->load->helper('html');
  if (file_exists(FCPATH . 'image/templates/' . $this->configs->get('config_template') . '.png') == FALSE) {
    $img =  addslashes(img('image/no_image.png'));
    echo json_encode(array('image'=>$img));
  } else {
  if($this->input->post('config_template') !== FALSE) {
    $img = addslashes(img('image/templates/' . basename($this->input->post('config_template')) . '.png'));
    echo json_encode(array('image'=>$img));
   }
  }
}

查看

<form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-setting" class="form-horizontal">

<div class="form-group">
<label class="col-sm-2 control-label" for="input-template"><?php echo $entry_template; ?></label>
<div class="col-sm-10">
<select name="config_template" id="input-template" class="form-control">
<?php foreach ($templates as $template) { ?>
<?php if ($template == $config_template) { ?>
<option value="<?php echo $template; ?>" selected="selected"><?php echo $template; ?></option>
<?php } else { ?>
<option value="<?php echo $template; ?>"><?php echo $template; ?></option>
<?php } ?>
<?php } ?>
</select>


<div class="form-group">
<div class="col-lg-4">
<div class="img-thumbnail">
<div id="template"></div>
</div>
</div>
</div>

</form>

<script>
console.log('Jquery is working');
$('select[name="config_template"]').on('change', function () {
var template_name;
template_name = encodeURIComponent(this.value);
$.ajax({
type: 'POST',
dataType: 'jsonp',
url: '<?=base_url('admin/setting/template');?>'  + '/',
data: { config_template: template_name
},
complete: function () {
$('.fa-spin').remove();
},
success: function (data) {
$('.fa-spin').remove();
$('#template').html(data.image);
},
error: function (xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
})
</script>

2 个答案:

答案 0 :(得分:0)

发现问题是它是addslashes

public function template() {
  $this->load->helper('html');
  if (file_exists(FCPATH . 'image/templates/' . $this->configs->get('config_template') . '.png') == FALSE) {
    $img =  addslashes(img('image/no_image.png'));
    echo json_encode(array('image'=>$img));
  } else {
  if($this->input->post('config_template') !== FALSE) {
    $img = addslashes(img('image/templates/' . basename($this->input->post('config_template')) . '.png'));
    echo json_encode(array('image'=>$img));
   }
  }
}

public function template() {
$this->load->helper('html');
if (file_exists(FCPATH . 'image/templates/' . $this->configs->get('config_template') . '.png') == FALSE) {
$img = img('image/no_image.png');
echo json_encode(array('image'=>$img));
}else
{
if($this->input->post('config_template') !== FALSE)
{
$img = img('image/templates/' . $this->input->post('config_template') . '.png');
echo json_encode(array('image'=>$img));
}
}
}

答案 1 :(得分:0)

  1. 您正在输出JSON。不是JSONP。将dataType: 'jsonp',更改为dataType: 'json',
  2. 向某些HTML添加斜杠会破坏该HTML。您将在图片网址中添加\个字符并将其设置错误。删除addslashes函数的所有用法。 encode_json将完成你需要的所有逃脱。