2012-06-26 35 views
0

来源JSP:从jsp页面错误fomat数据JSON?

String r_payment_code = request.getParameter("paymentcode"); 
String sql = "SELECT hd.invoice_id, tt.payment_code" 
      +" FROM dbt_invoice hd, dbt_payment tt" 
      +" WHERE hd.payment_id = tt.payment_id" 
      +" AND hd.period_id = 147" 
      +" AND tt.period_id = 147" 
      +" AND tt.payment_code LIKE 'NDH"+ r_payment_code +"%' and rownum <=5"; 
RecordSet sData = DBUtil.executeQuery(db_name, sql); 
JSONObject json  = new JSONObject(); 
JSONArray jsonarr = new JSONArray(); 
JSONObject jsonobj; 
int i = 0; 
String[] arrPaymentCode = new String[sData.RecordCount]; 
while(sData.next()){ 
    jsonobj = new JSONObject(); 
    jsonobj.put("invoice_id", sData.getString("invoice_id")); 
    jsonobj.put("payment_code", sData.getString("payment_code")); 
    jsonarr.add(jsonobj); 
} 
json.put("SRC_PAYMENCODE", jsonarr); 
response.setContentType("application/json"); 
out.println(json); 

从JSP页面输出地说:

[{ “INVOICE_ID”: “6384”, “payment_code”: “NDH000228015”},{ “INVOICE_ID”: “6385”, “payment_code”: “NDH000230254”},{ “INVOICE_ID”: “6386”, “payment_code”: “NDH000228302”},{ “INVOICE_ID”: “6387”, “payment_code”: “NDH000228303”},{ “invoice_id”:“6388”,“payment_code”:“NDH000228311”}]

从HTML调用

$("#txtPaymentCode").autocomplete(
       $.ajax({ 
        type: "POST", 
        url: "../../common/script/jquery/autocomplete/srcData.jsp", 
        data :{paymentcode : inputString}, 
        dataType: "json", 
        success: function(data){ 
         data = JSON.parse(data); 
         alert(data) 
        }, 
        error:function (xhr, ajaxOptions, thrownError){ 
         alert(xhr.status); 
         alert(thrownError); 
         document.getElementById("dvShowSearchPhone").innerHTML = thrownError; 
        } 
       }) 
     ); 

无效JSON:[{ “INVOICE_ID”: “6384”, “payment_code”: “NDH000228015”},{ “INVOICE_ID”: “6385”, “payment_code”: “NDH000230254”},{” INVOICE_ID “:” 6386" , “payment_code”: “NDH000228302”},{ “INVOICE_ID”: “6387”, “payment_code”: “NDH000228303”},{ “INVOICE_ID”: “6388”, “payment_code”: “NDH000228311” }]

+4

有什么问题吗? – Cristy

回答

0

不完全确定问题是什么,但我会猜测。
如果你想自动完成付款的代码,当你在你的javascript的回调处理尝试data.payment_code会发生什么(即

success: function(data){ 
data = JSON.parse(data); 
alert(data.payment_code) 
}, 
0

不知道,但只是一种猜测

尝试结束与你的Ajax调用半结肠>>})应该是});

,并尝试加入

  contentType: "application/json; charset=utf-8", 
+0

谢谢你的回答!我使用了<%@ page contentType =“application/json”%> <%@ page pageEncoding =“UTF-8”%> – user1482495