zzzz3621
逍遥兮容与
采纳率100%
2011-08-07 10:45

初学DWR不是很懂,页面上显示undefined

已采纳

[img]http://dl.iteye.com/upload/attachment/531871/57463dbb-5454-3a2c-9819-d4bc1bcf1729.jpg[/img]
页面上显示的是undefined,主要是DWR没学过,还有setAttribute('id','info'+list[i]);appendChild(ele);innerHTML这些用法不是很清楚
到底是哪里出错了,照我的理解应该会显示出我需要的结果的啊,标题加内容
核心代码:
[code="java"]var request;
var minpage;
var maxpage;
var startindex;
var hasnext;

function doSearch(type){
var result=document.getElementById("result");
var pagingdiv=document.getElementById('paging');
result.innerHTML="";
pagingdiv.innerHTML="";

if(type!='paging'){
    var startindexinput=document.getElementById('startindex');
    startindexinput.value="1";
}

request={startindex:1,query:""};
DWRUtil.getValues(request);

searchService.getSearchResults(request,fillPage);

}

function fillPage(data){
var ID=data.id;
var URL=data.url;
var TITLE=data.title;
var CONTENT=data.content;
var resultdiv=document.getElementById('result');
var pagingdiv=document.getElementById('paging');

resultdiv.innerHTML="";
pagingdiv.innerHTML="";

if(ID.length==0){
    resultdiv.innerHTML="<span>sorry, we can't find what you want...</span>";
    return;
}

for(var i=0;i<ID.length;i++){
    var ele=document.createElement('div');
    //ele.setAttribute('id','info'+list[i]);
    ele.setAttribute('id','info');
    ele.innerHTML="<span>loading..</span>";
    resultdiv.appendChild(ele);
    var result=document.getElementById('info');
    //result.innerHTML="<font color=\"#0033CC\">" + data.title + "</font><br /><a href=\"" + data.url + "\">"
    result.innerHTML="<a href=\"" + URL[i] + "\">"
    +"<font color=\"#0033CC\">" + TITLE[i] + "</font></a><br /><font color=\"#008000\">" + CONTENT[i] + "</font><br /><br /><br />";
    //searchService.getSearchResultById(list[i],fillDetailResult);
    resultdiv.appendChild(result);
}[/code]

[code="java"]public SearchResults getSearchResults(SearchRequest request){
SearchResults results=new SearchResults();
Query query=makeQuery(request.getQuery());

    List <String>id=new ArrayList<String>();//id+title+url+content
    List<String>title=new ArrayList<String>();
    List <String>url=new ArrayList<String>();
    List <String>content=new ArrayList<String>();

    try{
        IndexSearcher searcher=new IndexSearcher(INDEX_STORE_PATH);
        Hits hits=searcher.search(query);
        int length=hits.length();
        int startindex=request.getStartindex();
        int endindex;
        if(startindex>length)
        {
            //不可能
        }
        else{
            endindex=startindex+9;
            if(endindex>=length){
                endindex=length;
            }
            for(int i=startindex;i<=endindex;i++){
                Document doc =hits.doc(i-1);
                String pageid=doc.get("pageid");
                String pagetitle=doc.get("title");
                String pageurl=doc.get("url");
                String pagecontent=choose(doc.get("content"),request.getQuery());
                id.add(pageid);
                title.add(pagetitle);
                url.add(pageurl);
                content.add(pagecontent);
            }
        }
        results.setId(id);
        results.setTitle(title);
        results.setUrl(url);
        results.setContent(content);
        int startpage;
        int endpage;
        if(startindex%100==0){
            startpage=(startindex/100-1)*10+1;
        }
        else{
            startpage=(startindex/100)*10+1;
        }
        int span;
        int hasnext;

        float temp=((float)(length-(startpage-1)*10))/10;
        if(temp>10)
        {
            span=9;
            hasnext=1;
        }
        else if(temp==10){
            span=9;
            hasnext=0;
        }
        else{
            hasnext=0;
            if((int)temp<temp){
                span=(int)temp;
            }
            else{
                span=(int)temp-1;
            }
        }
        endpage=startpage+span;

        results.setMinpage(startpage);
        results.setMaxpage(endpage);
        results.setHasnext(hasnext);
        results.setStartindex(startindex);
    }catch(Exception e){
        e.printStackTrace();
    }
    return results;
}[/code]
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

10条回答

  • redstarofsleep redstarofsleep 10年前

    应该是对的undefined是未定义,也就是根本就没有这个属性。
    打印的是空的,才是有这个属性

    点赞 评论 复制链接分享
  • redstarofsleep redstarofsleep 10年前

    你看下data的length呢
    另外,因为map里放的是List,所以data['url']这样的如果有数据的话,也是个数组啊

    点赞 评论 复制链接分享
  • redstarofsleep redstarofsleep 10年前

    [code="java"]
    public Map> getSearchResults(SearchRequest request){
    List startindexList = new ArrayList();
    startindexList.add(Integer.toString(startindex));
    map.put("startIndex",startindexList);
    }
    这样子不行吗?
    [/code]

    点赞 评论 复制链接分享
  • redstarofsleep redstarofsleep 10年前

    单个的值也可以封装成长度为一的List嘛

    点赞 评论 复制链接分享
  • redstarofsleep redstarofsleep 10年前

    [quote]
    var ID=data.id;

    var URL=data.url;

    var TITLE=data.title;

    var CONTENT=data.content;

    [/quote]
    你从data中并没有取int型的参数啊,取的这4个都是List

    点赞 评论 复制链接分享
  • redstarofsleep redstarofsleep 10年前

    [quote]
    private List id=new ArrayList();//id+title+url+content

    private List title=new ArrayList();

    private List url=new ArrayList();

    private List content=new ArrayList();
    [/quote]

    你如果要让DWR能认出你的Java对象,那需要在DWR里面配置的。。
    DWR直接能认出来的就是Java已经内置的几个对象String,Integer等,或者是这些对象的集合,List,Map

    所以,这四个参数可以封装成Map>,或者是List>,这样的Javascript可以直接解析

    点赞 评论 复制链接分享
  • redstarofsleep redstarofsleep 10年前

    [quote]把title url content都改成Map? id当key?[/quote]

    不是这个意思。

    你的DWR方法:public SearchResults getSearchResults(SearchRequest request){}

    不要返回SearchResults这个对象,返回一个Map的类型

    map.put("ID",xxx);
    map.put("URL",XXX);

    页面获取值就是data['ID']

    点赞 评论 复制链接分享
  • redstarofsleep redstarofsleep 10年前

    你把你那个对象换成Map的形式传回页面
    然后用data['content']的方式取值

    点赞 评论 复制链接分享
  • redstarofsleep redstarofsleep 10年前

    DWR的返回值可以是String,List,Map这类的,你直接传回对象,可能会有问题

    点赞 评论 复制链接分享
  • redstarofsleep redstarofsleep 10年前

    回调函数进去了吗?alert过吗,这些值都拿到了吗?
    [quote]
    var ID=data.id;

    var URL=data.url;

    var TITLE=data.title;

    var CONTENT=data.content;

    [/quote]

    点赞 评论 复制链接分享

相关推荐