這是我在stackoverflow上的第一個問題 - 需要所有專家的幫助。我們的網絡應用程序允許用戶輸入轉義/特殊字符。我們正在對極端情況進行一些測試。我可以通過ajax/json傳遞轉義字符。使用URL從用戶輸入到HTML5數據屬性的特殊字符編碼/解碼
var test = JSON.stringify({
typeName: $("#typeName").val(),
invoiceType: 'NewTypeArea'
});
$.ajax({
type: "POST",
url: "BackEnd/WebService.php",
data: {
newInvoice: test
},
dataType: 'json'
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
我的後端開發者他們與逃生/特殊字符的事情。當我撥打另一個電話,我得到以下JSON數據
[{"propName":"Special '\"'\\","typeName":"type'\"\\"}]
該數據返回是正確的。爲了簡單起見 - 本例中只有一個對象 - 我將這些數據放入下拉列表中。
$.each(data, function(i, val) {
var output = '<option class="type" id="' + this.qfInvoiceNum + '" value="' + this.typeName + '">' + this.typeName +'</option>';
$('select#typeList').append(output);
});
它正確顯示所有的轉義/特殊字符。例如,「類型‘\‘\’顯示爲類型’\」 \
然後,用戶選擇列表中的項目之一。我試着捕捉類型名數據屬性值等。以下是一個例子多種方式:
$('.selectChange1').change(function() {
typeGrab = $('select option.type:selected').val();
pullArea();
});
但是,這是哪裏出了問題進來如果他們選擇特殊列表項/轉義字符從控制檯的值返回
"type'"
不
"type'\"\\"
所以當然當我通過在var typeGrab的JSON/AJAX調用它是錯誤的。
關於如何從下拉菜單中獲取轉義/特殊字符,是否有很好的解決方案?或者,當我循環訪問數據時,我可能會遇到$ .each錯誤?或者,很可能,我錯過了一些非常簡單的事情。任何幫助或見解都會很棒。
謝謝。
附加信息。第一個解決方案確實有效。但是,我最初並沒有使用這個功能,因爲有幾次顯示的文本不是我想要抓取的 - 這就是爲什麼我正在嘗試數據* -attributes的原因。
例如:
$.each(data, function(i, val) {
var output = '<option id="' + this.qfInvoiceNum + '" class="type" data-index="' + this.typeName + '" >' + this.typeName +' | #' + this.qfInvoiceNum +'</option>';
$('select#typeList').append(output);
});
如果我想this.typeName與逃逸值/特殊字符所提供的解決方案是行不通的。我無法使用數據屬性或html選項值。
然而,大量的研究後,我發現這個問題的最佳解決方案,如果你正在尋找的值有逃生/特殊字符數據的屬性來傳遞。請在下面回答。
是的,這個工作!非常感謝你。我感謝您的幫助。 – CreatordotJS
我找到了我正在尋找的解決方案。我更新了我的問題的底部並在下面回答。我非常感謝你的幫助,因爲它澄清了我正在努力完成的任務。謝謝! @cFreed – CreatordotJS
是的!恭喜:確定這種新方式是真正的好方法。感謝您的反饋意見,並花時間在自己的答案中清楚地展示最終解決方案:這對任何其他讀者來說都是一個有價值的解釋。 – cFreed