2015-06-16 62 views
0

我想使用先前存儲的值將變量傳遞給onClick函數。我有一個數據庫設置,可以在提供郵政編碼時搜索商店位置。例如,在用戶搜索郵政編碼後,使用ajax調用生成以下鏈接。返回值 「WAFHOH3」 是與特定存儲關聯的ID:未捕獲ReferenceError:在使用字符串時沒有定義onclick

生成的鏈接:

<input type="button" onclick="myfunction(WAFHOH1);" value="This Is My Store" data-store-code="WAFHOH3"> 

基於此代碼:

<div class="col-sm-3"><input type="button" onclick="myfunction(' + item.store_code + ');" value="This Is My Store" data-store-code="' + item.store_code + '"></div> 

我的問題是如果返回數字以外的任何內容,則會收到「Uncaught ReferenceError:WAFHOH3未定義」控制檯錯誤。當像下面的例子那樣傳遞一個數字時,一切正常,並且沒有錯誤,應用程序繼續按預期工作。

例如(這工作):

我用盡手動更改字符串到數字只隔離任何數據庫相關的問題。我唯一的猜測是,我的代碼中有些東西可能試圖將輸入驗證爲數字。

下面是ajax調用的完整代碼。

全碼:

function myFunction() { 
var searchValue = $('#foobar').val(); 

if (searchValue.length > 3) { 
    var acs_action = 'searchCction'; 

    $.ajax({ 
    async: false, 
    url: mysearchurl.url+'?action='+acs_action+'&term=' + searchValue, 
    type: 'POST', 
    data: { 
     name: searchValue 
    }, 
    success: function (results) { 
     var data = $.parseJSON(results); 

     $('#resContainer').hide(); 

     var html = ''; 

     if (data.length > 0) { 
     html += '<br/><br/><ul>'; 
     for (var i = 0; i < data.length; i++) { 
      var item = data[i]; 
      html += '<li>'; 
      html += '<div class="row myclass">'; 
      html += '<div class="col-sm-9">'; 
      html += ' <h3>' + item.label + '</h3>' ; 
      html += ' <span>' + item.desc + '</span>'; 
      html += '</div>' 
      html += ' <div class="col-sm-3"><input type="button" onclick="dofunction(' + item.store_code + ');" value="This Is My Store" data-store-code="' + item.store_code + '"></div>'; 

      html += '</div>'; 
      html += '</li>'; 
     } 
     html += '</ul><br/><br/><p>This is an example message please email us at <a href="mailto:[email protected]">[email protected]</a> for assistance.'; 
     } 
     else { 
     html += '<br/><br/><p>This is an example message, email us at <a href="mailto:[email protected]">[email protected]</a> for assistance.'; 
     } 

     $('#foo').html(html); 
     $('#foo').show(); 
     $('.foobar').hide(); 
    } 
    }); 
} else { 
    $('#foo').hide(); 
} 
} 

任何指導表示讚賞。

回答

3

您需要用引號包裝輸入item.store_code;否則,它試圖把它當作一個變量,而不是一個字符串:

html += '<div class="col-sm-3"><input type="button" onclick="noActivationCodeRegistration(\'' + item.store_code + '\');" value="This Is My Store" data-store-code="' + item.store_code + '"></div>'; 

理想情況下,你會給予按鈕一個類(如register)後附上click處理程序:

html += '<div class="col-sm-3"><input type="button" class="register" value="This Is My Store" data-store-code="' + item.store_code + '"></div>'; 

// Later 
$('.register').on('click', function() { 
    var storeCode = $(this).data('storeCode'); 
    noActivationCodeRegistration(storeCode); 
}); 
+0

這個工作完美。我記得在幾個地方閱讀報價是可選的。我猜在這種情況下,情況有點不同。謝謝! – Infini7y

相關問題