Jquery 如何正确显示此条形码

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

我使用Zend Framework中的CodeIgniter创建条形码,这非常简单:

$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帐户在那里交换信息吗?非常感谢这个例子。没有其他地方,包括手册,我可以找到解释,显示条形码必须首先在一个单独的控制器/操作中生成。我尝试了几个小时直到我找到你的答案才有结果。再次感谢!