私は次のコードを持っています:
echo '
<td>
<input type="button" name="delete" value="X" onclick="clearSelection(this.form, '.$type.');this.form.submit();" />
</td>'
;
問題は、括弧で囲む必要があるclearSelection()
ため、Javascript関数に文字列を渡すことができないことです。$type
バックスラッシュ、u0222、複数引用符などで試してみましたが、何も解決策につながりませんでした。
解決:
$type = json_escape_string($type);
$raw_text = "clearSelection(this.form, $type); this.form.submit();";
$escaped_text = htmlspecialchars($raw_text);
echo '<td><input type="button" name="delete" value="X" onclick="'.$escaped_text.'" /></td>';
function json_escape_string($str){
$str = strtr($str, array('\\'=>'\\\\',"'"=>"\\'",'"'=>'\\"',"\r"=>'\\r',"\n"=>'\\n','</'=>'<\/'));
return "'".$str."'";
}