Jquery 如何正确显示此条形码
我使用Zend Framework中的CodeIgniter创建条形码,这非常简单:Jquery 如何正确显示此条形码,jquery,zend-framework,codeigniter,http-headers,barcode,Jquery,Zend Framework,Codeigniter,Http Headers,Barcode,我使用Zend Framework中的CodeIgniter创建条形码,这非常简单: $this->load->library('zend'); $this->zend->load('Zend/Barcode'); $txt = $_POST['Info']; // Only the text to draw is required $barcodeOptions = array
$this->load->library('zend');
$this->zend->load('Zend/Barcode');
$txt = $_POST['Info'];
// Only the text to draw is required
$barcodeOptions = array('text' => $txt);
// No required options
$rendererOptions = array();
// Draw the barcode in a new image,
// send the headers and the image
$data = Zend_Barcode::factory(
'code39', 'image', $barcodeOptions, $rendererOptions
)->render();
但是,通过Post发送的“信息”是通过jquery使用ajax函数发送的:
$('#barCode').click(function(){
var datos = $("#concepto").val();
$.ajax({
url: "<?php echo site_url('articulos/barcode')?>",
type: "POST",
data: "Info=" + datos
});
$('#条形码')。单击(函数(){
var datos=$(“#concepto”).val();
$.ajax({
url:“”,
类型:“POST”,
数据:“Info=“+datos
});
我知道它是有效的,因为我在ajax调用上有一个“success:”函数,但它返回的是胡言乱语:
�巴布亚新几内亚�巴布亚新几内亚�巴布亚新几内亚�巴布亚新几内亚�巴布亚新几内亚�巴布亚新几内亚�巴布亚新几内亚�巴布亚新几内亚�巴布亚新几内亚�巴布亚新几内亚�巴布亚新几内亚�巴布亚新几内亚�巴布亚新几内亚�巴布亚新几内亚
我知道这是图像,但由于标题无法重新连接,因此显示为这样。我已经尝试打开一个新窗口,但也失败了,任何人都可以向我建议一种获取条形码图像的方法?最好在一个新窗口中。您必须更改内容类型标题。这是您的浏览器知道的唯一方法如何显示接收到的数据 您说您不能更改标题,这是为什么?您应该能够使用:
header('Content-Type: image/png');
否则,您可能会得到一个默认的内容类型text/plain
,这将导致它显示为文本
浏览器只看到一个比特流,并依靠
内容类型标题来决定如何处理它。您必须更改内容类型标题。这是浏览器知道如何显示其接收的数据的唯一方法
您说您不能更改标题,这是为什么?您应该能够使用:
header('Content-Type: image/png');
否则,您可能会得到一个默认的内容类型text/plain
,这将导致它显示为文本
浏览器只看到一个比特流,并依靠内容类型标题来决定如何处理它。您可以尝试将地址传递给生成图像的脚本,并将其传递到图像标记的源中,例如
,如果您想在HTML中呈现图像。这就是我使用条形码的方式。下面是我的代码示例使用just Zend:
内部控制器/操作
$barcodeOptions = array('text' => 'TEXT');
$rendererOptions = array('imageType'=>'gif');
Zend_Barcode::factory('code39', 'image', $barcodeOptions, $rendererOptions)->render();
视图
<img src="/path/to/the/controller/action/above"/>
您可以尝试将生成图像的脚本的地址传递到图像标记的源中,例如,
,如果您想在HTML中呈现图像,这就是我使用条形码的方式。下面我的代码示例仅使用Zend:
内部控制器/操作
$barcodeOptions = array('text' => 'TEXT');
$rendererOptions = array('imageType'=>'gif');
Zend_Barcode::factory('code39', 'image', $barcodeOptions, $rendererOptions)->render();
视图
<img src="/path/to/the/controller/action/above"/>
如果不想发送标题,可以使用draw方法:
Zend_Barcode::factory('code39', 'image', $barcodeOptions, $rendererOptions)->draw();
如果不想发送标题,可以使用draw方法:
Zend_Barcode::factory('code39', 'image', $barcodeOptions, $rendererOptions)->draw();
也许我做错了,我应该在哪里添加“header('Content-Type:image/png');”?我尝试将“contentType:'image/png'”添加到ajax调用中,但我得到了以下错误:严重性:警告消息:无法修改头信息-头已经由发送(输出从system/libraries/Exceptions.php:166开始)Filename:Renderer/Image.php行号:343您将收到该错误,因为需要在响应开始时发送标题。如果在发送标题后有任何内容,则无法添加更多内容。请尝试将标题调用尽可能高。如果文件中有额外的行或任何内容,则可能导致该错误问题。另一种方法是打开输出缓冲,但这更复杂。Zend Barcode在呈现标题时会根据需要隐式更改标题的内容类型。显式操作只会复制标题。可能我做错了,我应该在哪里添加“标题('Content-type:image/png');??我尝试添加“contentType:'image/png'”到ajax调用,但我得到以下错误:严重性:警告消息:无法修改头信息-头已由发送(输出从system/libraries/Exceptions.php:166开始)Filename:Renderer/Image.php行号:343您将收到该错误,因为需要在响应开始时发送标题。如果在发送标题后有任何内容,则无法添加更多内容。请尝试将标题调用尽可能高。如果文件中有额外的行或任何内容,则可能导致该错误问题。另一种方法是打开输出缓冲,但这更复杂。Zend Barcode在呈现标题时会根据需要隐式地更改标题的内容类型。显式地这样做只会复制它。路径是从index.php开始的还是从其他地方开始的?还是从其他地方开始的?我们可以找个时间聊聊吗所以我可以看出我错在哪里?对不起,一直很忙。没问题,我们可以找时间聊天。但是我不明白你的问题^^哈哈,我在哪里可以和你聊天?你有一个twitter帐户在那里交换信息吗?非常感谢这个例子。没有其他地方,包括手册,我可以找到解释,显示条形码必须irst将在一个单独的控制器/操作中生成。我尝试了几个小时,没有结果,直到找到你的答案。再次感谢!路径是从index.php开始的?还是只是从其他地方开始的?或者只是从其他地方开始的?我们可以找个时间聊天,这样我就可以知道我错了吗?对不起,一直很忙。没问题,我们可以聊天我。但我不明白你的问题^^哈哈,我在哪里可以和你聊天?你有一个twitter帐户在那里交换信息吗?非常感谢这个例子。没有其他地方,包括手册,我可以找到解释,显示条形码必须首先在一个单独的控制器/操作中生成。我尝试了几个小时直到我找到你的答案才有结果。再次感谢!