2014-02-13 169 views
0

我有一個用戶可以上傳產品照片的頁面,他從品牌選擇框中選擇品牌,該品牌選擇框將使用屬於該品牌的產品填充產品選擇框。未選擇頁面加載時加載Javascript

這一切都與coldfusion合作,但隨着我們添加更多的產品變得更慢,我已經把產品放在另一個頁面上使用JSON格式。如果我進入該頁面 - prod-json.cfm?brand_id = 115,它會正確加載所有信息。問題是,我需要它來顯示照片頁面,當用戶選擇一個特定的品牌上,下面是我使用的調用頁面的產品代碼:

<script type="text/javascript"> 
// JavaScript Document 

// The queryToObject function 
var queryToObject = function(q) { 
var col, i, r, _i, _len, _ref, _ref2, _results; 
_results = []; 
for (i = 0, _ref = q.ROWCOUNT; 0 <= _ref ? i < _ref : i > _ref; 0 <= _ref ? i++ : i--) { 
    r = {}; 
    _ref2 = q.COLUMNS; 
    for (_i = 0, _len = _ref2.length; _i < _len; _i++) { 
    col = _ref2[_i]; 
    r[col.toLowerCase()] = q.DATA[col][i]; 
    } 
    _results.push(r); 
} 
return _results; 
}; 

// Read the products 
$.ajax({ 
    type: "POST", 
url: "prod-json.cfm", 
data: {'brand_id': $("##brand_id").val()}, 
dataType: "json", 
success: function(data) { 
    var row, sData, _len, _i; 
    // Run the data thru queryToObject 
    data = queryToObject(data); 
    // Convert the object to a string to display it 
    sData = JSON.stringify(data); 

    // Print all products 
    $('##product_id').append(''); 
    // Loop over the query 
    for (_i = 0, _len = data.length; _i < _len; _i++) { 
    row = data[_i]; 
    $('.multiple').append('<option value=' + row.product_id + ' class="' + row.brand_id + '">' + row.product_title + ' - ' + row.make_title + ' ' + row.model_title + ''); 
} 
} 
}); 
</script> 

如果我刷新頁面選擇一個特定的品牌,然後它會顯示產品,但如果我選擇另一個品牌,那麼它什麼也不加載,請有人幫我解決這個問題。

在此先感謝。

+0

您是否收到來自任何結果您選擇第二個品牌時的AJAX通話?您的瀏覽器控制檯中有什麼? JavaScript中的##是否因爲ColdFusion正在渲染此腳本? –

+0

是的,##是因爲它的coldfusion,當我選擇了另一個品牌時沒有反應,它只顯示產品,如果我離開品牌選擇框選擇一些東西,然後重新加載頁面,這是它唯一的工作時間。 – johnnyc0506

+0

你可以發佈JSFiddle上的東西嗎?當你說沒有迴應時,是否意味着它沒有提出請求,或者ColdFusion沒有返回任何東西。 –

回答

0

我認爲發生的事情是你沒有聽到下拉改變的任何東西。

你可以通過幾種方法解決這個問題。最簡單的是包裝在另一個函數整個AJAX調用...喜歡的東西:

function loadData() { 
    $.ajax({ 
    type: "POST", ....... 
} 

,然後改變你的代碼的頂部看起來像:

$(function(){ 

    $('.styled').customSelect(); 

    $('#brand_id').change(function() { 
     loadData(); 
    }); 
    loadData(); // this triggers the initial load for the default value. might not be necessary 
}); 
+0

嗨,布賴恩,感謝您查看代碼,我發佈在jsfiddle中的JavaScript實際上是3個獨立的腳本,我必須將它作爲一個粘貼,上述情況是否仍然適用於該腳本? – johnnyc0506

+0

我不能直接測試它,因爲跨域的問題,但它不應該花很長時間來測試您的環境 –

+0

我真的很抱歉在js中問你這個問題,但我究竟如何實現你的代碼我提交的代碼在頂部? – johnnyc0506