ZF1.10+Jquery1.4.2+autocomplete求助!

jianglg2008 2010-12-16 12:36:46
我在做一个项目,用ZF1.10.7,另外加上jquery1.4.2,在使用autocomplete这个组件时,用ajax+post方式向ZF的searchAction提交时Actioni 没有反应,如果不用Action,功能却好用,那个高手知道什么原因?

Action源码:

function searchAction()
{
//获取数据库内容
$registry = Zend_Registry::getInstance();
$loKkcheckIn = new Mykkdj();
$dbAdapter = $loKkcheckIn->getAdapter();

$filter = new Zend_Filter_StripTags();
$result = array();

//接收POST传递过来的参数
// if ($_SERVER['HTTP_X_REQUESTED_WITH']=="XMLHttpRequest")
// {
$lcsFormFiledName= $filter->filter($this->_request->getPost('name'));
$lcsFormValue = $filter->filter($this->_request->getPost('val'));
// if(!empty($lcsFormValue))
// {
// $sWhereSQL=$dbAdapter->quoteInto($lcsFormFiledName.' LIKE %?%',$lcsFormValue);
// }
// $result=$loSysCode->fetchAll($sWhereSQL)->toArray();
//
$result = array(
"Great Bittern"=>"Botaurus stellaris",
"Little Grebe"=>"Tachybaptus ruficollis",
"Black-necked Grebe"=>"Podiceps nigricollis",
"Little Bittern"=>"Ixobrychus minutus",
"Black-crowned Night Heron"=>"Nycticorax nycticorax",
"Purple Heron"=>"Ardea purpurea",
"sPOst"=>"\"".$lcsFormFiledName." ".$lcsFormValue."\""
);
// }
foreach ($items as $key=>$value) {
array_push($result, array("id"=>$value, "label"=>$key, "value" => strip_tags($key)));
}
echo array_to_json($result);(该函数已经存在并正常工作)
}

POST过来的数据:

POST:
Array
(
[name] => sDriverBarCode
[val] => 34534
)
Global:

Array
(
[GLOBALS] => Array
*RECURSION*
[_POST] => Array
(
[name] => sDriverBarCode
[val] => 34534
)

[_GET] => Array
(
)

[_COOKIE] => Array
(
[PHPSESSID] => 5ihs2i8o5cbqgen43he5a0ann5
)

[_FILES] => Array
(
)

[_ENV] => Array
(
)

[_REQUEST] => Array
(
[name] => sDriverBarCode
[val] => 34534
)

[_SERVER] => Array
(
[HTTP_X_REQUESTED_WITH] => XMLHttpRequest
[HTTP_ACCEPT_LANGUAGE] => zh-cn
[HTTP_REFERER] => http://localhost/zframework/index/home
[HTTP_ACCEPT] => application/json, text/javascript, */*
[CONTENT_TYPE] => application/x-www-form-urlencoded
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)
[HTTP_HOST] => localhost
[CONTENT_LENGTH] => 29
[HTTP_CONNECTION] => Keep-Alive
[HTTP_CACHE_CONTROL] => no-cache
[HTTP_COOKIE] => PHPSESSID=5ihs2i8o5cbqgen43he5a0ann5
[PATH] => C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs;d:\php5;c:\Program Files\Common Files\Roxio Shared\10.0\DLLShared\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;E:\Downloads\ZendFramework-1.10.7\bin;C:\Program Files\MKVtoolnix;
[SystemRoot] => C:\Windows
[COMSPEC] => C:\Windows\system32\cmd.exe
[PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
[WINDIR] => C:\Windows
[SERVER_SIGNATURE] =>
[SERVER_SOFTWARE] => Apache/2.2.15 (Win32) PHP/5.3.3
[SERVER_NAME] => localhost
[SERVER_ADDR] => 127.0.0.1
[SERVER_PORT] => 80
[REMOTE_ADDR] => 127.0.0.1
[DOCUMENT_ROOT] => D:/Apache/htdocs
[SERVER_ADMIN] => jianglg2008@126.com
[SCRIPT_FILENAME] => D:/Apache/htdocs/search.php
[REMOTE_PORT] => 52292
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => POST
[QUERY_STRING] =>
[REQUEST_URI] => /search.php
[SCRIPT_NAME] => /search.php
[PHP_SELF] => /search.php
[REQUEST_TIME] => 1292467994
)

[sFile] => ./log111.txt
[handle] => Resource id #3
)


页面JS:

(已经放在$(document).ready()中)
$("input#sDriverBarCode").autocomplete({
source: function( request, response ) {
$.ajax({
url: "<?php echo $this->baseUrl;?>/index/search",
type: "post",
dataType: "json",
data: {
name: "sDriverBarCode",
val: $("input#sDriverBarCode").val()
},
success: function( data ) {
response( $.map( data, function( item ) {
alert("val="+item.value);
return {
label: item.kID ,value: item.sDriverBarCode
}
}));
}
});
},
minLength: 1,
select: function( event, ui ) {
"Selected: " + ui.item.label +",Nothing selected, input was " + this.value;
},
open: function() {
$( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
},
close: function() {
$( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
}
});

有那位高手指点一下?
...全文
219 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianglg2008 2010-12-16
  • 打赏
  • 举报
回复
LOG中的内容:

Array
(
[name] => sDriverBarCode
[val] => a
)
Global:

Array
(
[GLOBALS] => Array
*RECURSION*
[_POST] => Array
(
[name] => sDriverBarCode
[val] => a
)

[_GET] => Array
(
)

[_COOKIE] => Array
(
[PHPSESSID] => nh18v41vjihoqbt7lvgb1hjqh7
)

[_FILES] => Array
(
)

[_ENV] => Array
(
)

[_REQUEST] => Array
(
[name] => sDriverBarCode
[val] => a
)

[_SERVER] => Array
(
[HTTP_X_REQUESTED_WITH] => XMLHttpRequest
[HTTP_ACCEPT_LANGUAGE] => zh-cn
[HTTP_REFERER] => http://localhost/zframework/index/home
[HTTP_ACCEPT] => application/json, text/javascript, */*
[CONTENT_TYPE] => application/x-www-form-urlencoded
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)
[HTTP_HOST] => localhost
[CONTENT_LENGTH] => 25
[HTTP_CONNECTION] => Keep-Alive
jianglg2008 2010-12-16
  • 打赏
  • 举报
回复
searxh.php源码:

<?php
ob_start();
$sFile="./log111.txt";
$handle = fopen($sFile,"a+");
Print_r($_GET);
print_r($_POST);
echo "Global:\r\n";
print_r($GLOBALS);
@fwrite($handle,ob_get_contents());
@fclose($handle);
@ob_end_clean();
function array_to_json( $array ){

if( !is_array( $array ) ){
return false;
}

$associative = count( array_diff( array_keys($array), array_keys( array_keys( $array )) ));
if( $associative ){

$construct = array();
foreach( $array as $key => $value ){

// We first copy each key/value pair into a staging array,
// formatting each key and value properly as we go.

// Format the key:
if( is_numeric($key) ){
$key = "key_$key";
}
$key = "\"".addslashes($key)."\"";

// Format the value:
if( is_array( $value )){
$value = array_to_json( $value );
} else if( !is_numeric( $value ) || is_string( $value ) ){
$value = "\"".addslashes($value)."\"";
}

// Add to staging array:
$construct[] = "$key: $value";
}

// Then we collapse the staging array into the JSON form:
$result = "{ " . implode( ", ", $construct ) . " }";

} else { // If the array is a vector (not associative):

$construct = array();
foreach( $array as $value ){

// Format the value:
if( is_array( $value )){
$value = array_to_json( $value );
} else if( !is_numeric( $value ) || is_string( $value ) ){
$value = "'".addslashes($value)."'";
}

// Add to staging array:
$construct[] = $value;
}

// Then we collapse the staging array into the JSON form:
$result = "[ " . implode( ", ", $construct ) . " ]";
}

return $result;
}

$result = array();
$items = array(
"Great Bittern"=>"Botaurus stellaris",
"Little Grebe"=>"Tachybaptus ruficollis",
"Black-necked Grebe"=>"Podiceps nigricollis",
"Little Bittern"=>"Ixobrychus minutus",
"Black-crowned Night Heron"=>"Nycticorax nycticorax",
"Purple Heron"=>"Ardea purpurea"
);
foreach ($items as $key=>$value) {
array_push($result, array("id"=>$value, "label"=>$key, "value" => strip_tags($key)));
}
echo array_to_json($result);
?>
jianglg2008 2010-12-16
  • 打赏
  • 举报
回复

如果我不向searchAction提交的话,改向http://localhost/search.php提交,就是可以出结果的,如图。
我想问题还是出在action 上。
先谢谢你们的指点!
ihefe 2010-12-16
  • 打赏
  • 举报
回复

//是否能这样
success: function( data ) {
return "{label: a ,value: b }";
}
ihefe 2010-12-16
  • 打赏
  • 举报
回复
测试简单的hello输出测试这个组件怎么用,是否能运行
zhongqixing1104 2010-12-16
  • 打赏
  • 举报
回复
echo 前修改头部成json,header('Content-Type: application/json');
jianglg2008 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 ihefe 的回复:]

json_decode
//解码

json_encode
//编码


如果没什么特殊要求就用php自带
[/Quote]
结果是一样的,只形式不同
ihefe 2010-12-16
  • 打赏
  • 举报
回复
json_decode
//解码

json_encode
//编码


如果没什么特殊要求就用php自带
jianglg2008 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ihefe 的回复:]
最后array转换了json,自己写的函数?
[/Quote]


function array_to_json( $array ){

if( !is_array( $array ) ){
return false;
}

$associative = count( array_diff( array_keys($array), array_keys( array_keys( $array )) ));
if( $associative ){

$construct = array();
foreach( $array as $key => $value ){

// We first copy each key/value pair into a staging array,
// formatting each key and value properly as we go.

// Format the key:
if( is_numeric($key) ){
$key = "key_$key";
}
$key = "\"".addslashes($key)."\"";

// Format the value:
if( is_array( $value )){
$value = array_to_json( $value );
} else if( !is_numeric( $value ) || is_string( $value ) ){
$value = "\"".addslashes($value)."\"";
}

// Add to staging array:
$construct[] = "$key: $value";
}

// Then we collapse the staging array into the JSON form:
$result = "{ " . implode( ", ", $construct ) . " }";

}
else { // If the array is a vector (not associative):

$construct = array();
foreach( $array as $value ){

// Format the value:
if( is_array( $value )){
$value = array_to_json( $value );
} else if( !is_numeric( $value ) || is_string( $value ) ){
$value = "'".addslashes($value)."'";
}

// Add to staging array:
$construct[] = $value;
}

// Then we collapse the staging array into the JSON form:
$result = "[ " . implode( ", ", $construct ) . " ]";
}

return $result;
}
ihefe 2010-12-16
  • 打赏
  • 举报
回复

//编码
$this->myjson =json_encode($this->array);
//返回json
echo $this->myjson;




//接收json
function(data){
var myjson="";
eval('myjson=' + data + ';');
//2维数组
$(".Name_view").html(myjson[0]['name']);



jianglg2008 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ihefe 的回复:]
Action 返回的结果用var_dump()输出 js success: function( data ) { alert(data );

看看数据是否是你想要
[/Quote]

【object object】
ihefe 2010-12-16
  • 打赏
  • 举报
回复
最后array转换了json,自己写的函数?
ihefe 2010-12-16
  • 打赏
  • 举报
回复
Action 返回的结果用var_dump()输出 js success: function( data ) { alert(data );

看看数据是否是你想要
jianglg2008 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jianglg2008 的回复:]
引用 5 楼 ihefe 的回复:
url: "<?php echo $this->baseUrl;?>/index/search", 确认这个连接能访问

是的,没有问题,能访问
[/Quote]

http://localhost/zframework/index/search访问后输出:

{ "Great Bittern": "Botaurus stellaris", "Little Grebe": "Tachybaptus ruficollis", "Black-necked Grebe": "Podiceps nigricollis", "Little Bittern": "Ixobrychus minutus", "Black-crowned Night Heron": "Nycticorax nycticorax", "Purple Heron": "Ardea purpurea", "sPOst": "\" \"", "key_0": { "id": "Botaurus stellaris", "label": "Great Bittern", "value": "Great Bittern" }, "key_1": { "id": "Tachybaptus ruficollis", "label": "Little Grebe", "value": "Little Grebe" }, "key_2": { "id": "Podiceps nigricollis", "label": "Black-necked Grebe", "value": "Black-necked Grebe" }, "key_3": { "id": "Ixobrychus minutus", "label": "Little Bittern", "value": "Little Bittern" }, "key_4": { "id": "Nycticorax nycticorax", "label": "Black-crowned Night Heron", "value": "Black-crowned Night Heron" }, "key_5": { "id": "Ardea purpurea", "label": "Purple Heron", "value": "Purple Heron" }, "key_6": { "id": "\" \"", "label": "sPOst", "value": "sPOst" } }
jianglg2008 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ihefe 的回复:]
url: "<?php echo $this->baseUrl;?>/index/search", 确认这个连接能访问
[/Quote]
是的,没有问题,能访问
ihefe 2010-12-16
  • 打赏
  • 举报
回复
url: "<?php echo $this->baseUrl;?>/index/search", 确认这个连接能访问
jianglg2008 2010-12-16
  • 打赏
  • 举报
回复
我用Zend_debug:dump()和echo都不行,没有任何输出的
zhongqixing1104 2010-12-16
  • 打赏
  • 举报
回复
还有action是ajax的话最好echo后die();下,布局也禁止掉吧。
zhongqixing1104 2010-12-16
  • 打赏
  • 举报
回复
你用firebug查看下响应的是什么数据,然后再分析原因。还有zend自带有转换成json的助手。
本次更新内容较多,已有的组件新增了很多新的API,并且首次加入了移动端开发框架,可谓相当给力,新东西自然意味着更多的BUG即将诞生,我个人预计在未来的1~2个版本里会有不少BUG修复的更新内容,今后EasyUI定会发力移动开发方向,所以也算是一个好的开头,虽然目前东西还不是很全,但是基本的也都够用了,希望EasyUI今后会越来越好吧!由于现在工作过于繁忙所以本次API更新延后了快2周,抱歉了!老规矩,介绍一下本次更新内容吧!官方给的更新内容写的不全,我已经全部补全了。包括更新内容中写到的新增API,但是在API文档中没有给出的,在我的API当中全部都有(比官方网站上的还要全 :P) jQuery EasyUI 1.4.2版本更新内容: Bug(修复) treegrid:修复重建treegrid之后列会恢复原始大小的问题。 Improvement(改进) draggable:添加“delay”属性,允许用户延迟拖动操作; tree:添加“filter”属性和“doFilter”方法; tabs:“add”方法允许用户在指定的索引位上插入选项卡面板; tabs:用户可以决定哪些选项卡面板可以被选择; tabs:添加“justified”,“narrow”和“pill”属性; layout:添加“unsplit”和“split”方法; messager:支持键盘导航功能; form:添加“onChange”事件; combobox:添加“queryParams”属性; slider:添加“range”属性; menu:添加“itemHeight”,“inline”,“noline”和“align”属性; panel:添加“header”属性,允许用户自定义面板标题栏; menubutton:添加“hasDownArrow”属性。 New Plugin(新组件) datalist:该组件是展示列表数据的组件,用户可以对列表数据进行分组、单选、多选等各种操作; navpanel:该组件是移动端框架的根组件; mobile:filebox 该组件提供了移动页面堆栈管理和导航。

4,250

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧