以下是我的一个php文件中的代码。它似乎有编译错误。我是php的新手。
任何人都可以在php功能代码中告诉我下面的错误:
function eshop_extras_checkout($echo){
$echo .= '<script>
$(".formGroup").hide();
$('#chooseForm input:checkbox').on('change', function() {
if($(this).is(':checked')) {
$("#" + $(this).val()).show();
}
else {
$("#" + $(this).val()).hide();
}
});
</script>';
$echo .= '<fieldset class="eshop eshop_extra">' . "\n";
$echo .= ' <form id="chooseForm">
<input type="checkbox" name="form1" value="form1"> Form1<br>
<input type="checkbox" name="form1" value="form2"> Form2<br>
</form>
<form id="form1" class="formGroup">
<h2>FORM 1</h2>
<label>Name</label><input type="text"> <br>
<label>Address</label><input type="text">
</form>
<form id="form2" class="formGroup">
<h2>FORM 2</h2>
<label>Username</label><input type="text"> <br>
</form>';
$echo .= '<legend>Articles Order Form</legend>' . "\n";
return $echo;
}
这是我浏览器中的错误:
解析错误:语法错误,第43行/home/harris12/public_html/somedomain.com/wp-content/plugins/eshop-extras/eshop-extras.php中的意外T_IF
答案 0 :(得分:2)
在这一行
$('#chooseForm input:checkbox').on('change', function() {
你的代码中有'字符,因此结束了echo-command。这就是为什么它的解释和PHP代码显然会导致错误。尝试使用\'
转义它答案 1 :(得分:1)
你需要逃避&#39; (撇号)
$('#chooseForm input:checkbox').on('change', function() {
因为它打破了你的第一个回声陈述
答案 2 :(得分:1)
您要连接到$echo
的第一个字符串在单引号内有单引号。
if($(this).is(':checked'))
尝试将它们更改为双引号。
您是否有必要通过连接构建此字符串?实际上,您根本不会在PHP中执行任何操作。你应该以相反的方式做到这一点,并将所有这些标记保持原样,但用<? ... ?>
散布任何实际的PHP代码。
答案 3 :(得分:1)
试试这样:
<?php
function eshop_extras_checkout($echo){
$echo .= '<script>
$(".formGroup").hide();
$("#chooseForm input:checkbox").on("change", function() {
if($(this).is(":checked")) {
$("#" + $(this).val()).show();
}
else {
$("#" + $(this).val()).hide();
}
});
</script>';
$echo .= '<fieldset class="eshop eshop_extra">' . "\n";
$echo .= ' <form id="chooseForm">
<input type="checkbox" name="form1" value="form1"> Form1<br>
<input type="checkbox" name="form1" value="form2"> Form2<br>
</form>
<form id="form1" class="formGroup">
<h2>FORM 1</h2>
<label>Name</label><input type="text"> <br>
<label>Address</label><input type="text">
</form>
<form id="form2" class="formGroup">
<h2>FORM 2</h2>
<label>Username</label><input type="text"> <br>
</form>';
$echo .= '<legend>Articles Order Form</legend>' . "\n";
return $echo;
}
?>
您应该转义撇号或使用双引号。
答案 4 :(得分:0)
这是使用HEREDOC的重写:
function eshop_extras_checkout($output){
$output .= <<<ESHOP_SCRIPT
<script>
$(".formGroup").hide();
$('#chooseForm input:checkbox').on('change', function() {
if($(this).is(':checked')) {
$("#" + $(this).val()).show();
}
else {
$("#" + $(this).val()).hide();
}
});
</script>
<fieldset class="eshop eshop_extra">
<form id="chooseForm">
<input type="checkbox" name="form1" value="form1" /> Form1<br />
<input type="checkbox" name="form1" value="form2" /> Form2<br />
</form>
<form id="form1" class="formGroup">
<h2>FORM 1</h2>
<label>Name</label><input type="text" /> <br>
<label>Address</label><input type="text" />
</form>
<form id="form2" class="formGroup">
<h2>FORM 2</h2>
<label>Username</label><input type="text" /> <br>
</form>
<legend>Articles Order Form</legend>
ESHOP_SCRIPT;
return $output;
}