我正在使用带有PHP的knockout.js,我正在尝试发出一个GET请求,然后返回一个HTML / knockout表单。这样做的原因是因为表单将被其他人使用,而不是复制/粘贴相当大的代码块,只是向我的服务器发出请求返回HTML / knockout的代码就少了。
//code on another server to request form from my server
$.ajax({
//request here
})
</script>
<div id = "update_div">
<!--form data goes here when received -->
</div>
现在,这是我服务器上的代码。问题在于,因为我必须使用php回复并且我正在返回文本,所以我需要在我正在回应的文本周围使用单引号或双引号。但是,我正在使用knockout.js和knockout.js验证插件,它需要单引号和双引号,基本上取消包含回声的引号。
例如,
<?
if($_GET['something']){
echo '
<tr>
<td>Full Name</td>
<td><span data-bind="validationOptions: { insertMessages: false}">
<input type="text" data-bind="value: fullName, valueUpdate: 'afterkeydown'"/></span></td>
<td data-bind="validationMessage: fullName"></td>
</tr>
';
}
?>
特别导致问题的一行是
<input type="text" data-bind="value: fullName, valueUpdate: 'afterkeydown'"/></span></td>
返回的错误是
Parse error: syntax error, unexpected 'afterkeydown' (T_STRING)
当我回声时,我使用单引号,因为我想将其作为文本返回,但是,在其中,我需要对不同的元素使用单引号和双引号。有没有办法解决这个问题?
答案 0 :(得分:4)
试试这个 -
<?
if($_GET['something']){
echo '
<tr>
<td>Full Name</td>
<td><span data-bind="validationOptions: { insertMessages: false}">
<input type="text" data-bind="value: fullName, valueUpdate: \'afterkeydown\'"/></span></td>
<td data-bind="validationMessage: fullName"><center></center></td>
</tr>
';
}
?>
答案 1 :(得分:3)
你需要逃脱它们
echo '
<tr>
<td>Full Name</td>
<td><span data-bind="validationOptions: { insertMessages: false}">
<input type="text" data-bind="value: fullName, valueUpdate: \'afterkeydown\'"/></span></td>
<td data-bind="validationMessage: fullName"><center></center></td>
</tr>
';
答案 2 :(得分:2)
PHP是一个超文本预处理器,您可以在不使用echo
的情况下编写原始HTML [并获得此类引用噩梦]:
<?php if($_GET['something']): ?>
<tr>
<td>Full Name</td>
<td><span data-bind="validationOptions: { insertMessages: false }">
<input type="text" data-bind="value: fullName, valueUpdate: 'afterkeydown'"/></span></td>
<td data-bind="validationMessage: fullName"><center></center></td>
</tr>
<?php endif; ?>
[请参阅SO语法高亮显示如何正常工作!]
BTW,自{4}以来不推荐使用<center>
标记。
答案 3 :(得分:1)
只要你有这样的文字:
TEXT 'LIKE' THIS
并且您希望回显它,只需在'带有\:
前面添加前缀 echo 'asdfadsf\'asdfasdf'
所以在你的情况下:
echo '
<tr>
<td>Full Name</td>
<td><span data-bind="validationOptions: { insertMessages: false}">
<input type="text" data-bind="value: fullName, valueUpdate: \'afterkeydown\'"/></span></td>
<td data-bind="validationMessage: fullName"><center></center></td>
</tr>
';