好吧,我正在使用 AJAX 从 WebService 生成潜在客户匹配列表。除了我的 pHp 中的这一部分之外,一切都在工作......
$html = "<h3> Search Results: ";
if(!is_array($searchResults))
{
$html .= $searchResults . "</h3>";
}
else{
$html .= "</h3><ul>";
foreach($searchResults as $result)
{
$html .= '<li> <a href="#" onclick="selectCustomer('. "'" . htmlentities((string)$result->entityId, ENT_QUOTES) . "'" . ')">' . $result->entityId . "</a></li>";
}
$html .= "</ul>";
}
echo $html;
这是我的选择 JavaScript selectCustomer 函数:
<script>
function selectCustomer(selectedCustomer){
$.ajax({
type: 'GET',
url: "<?php echo JURI::base() . "index.php?option=com_sample&view=place_order&task=getCustomer&customerName=";?>" + encodeURIComponent(selectedCustomer),
beforeSend:function(){
$('#CustomerInfo').html('<div class="loading"><img src="<?php echo JURI::base() . "components/com_joomsuite/assets/images/ajax-loader.gif"?>" alt="Loading..." /></div>');
},
success:function(data){
$('#CustomerInfo').html(data);
$('#customerEmail').val($('#customerEmailAJAX').html());
$('#customerName').val($('#customerNameAJAX').html());
},
error:function(){
$('#ajax-panel').html('<p class="error"><strong>Oops!</strong> Try that again in a few moments.</p>');
}
});
}
</script>
您可能已经注意到在我使用 Joomla 的 JS 中出现了一点 pHp :P... 这个函数在其他 2 种情况下成功使用。仅当从通过 AJAX 显示的 onclick 调用它时才会失败。
Chrome 不断抛出“Uncaught SyntaxError: Unexpected identifier”,但没有第 # 行。我假设它与 onclick 调用有关。
我进入了 chrome 的检查元素,发现了这个:
<a href="#" onclick="selectCustomer('13064 Moto's Burger Palace')">13064 Moto's Burger Palace</a>
所以这是明显的问题吗?它与您小时候的“您将撇号放在我的单引号中”的说法相同。但是 htmlentities() 函数不应该阻止这种情况……不,因为撇号是由 chrome(浏览器)呈现的。
所以我的问题是(最后)我可以在我的 php 函数中改变什么,这将允许 onclick 运行我的 selectCustomer 函数并正确传递一个可能包含或不包含撇号的字符串......
我宁愿改变这条线(但愿意接受其他可能性):
$html .= '<li> <a href="#" onclick="selectCustomer('. "'" . htmlentities((string)$result->entityId, ENT_QUOTES) . "'" . ')">' . $result->entityId . "</a></li>";