2012-06-26 53 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