2013-06-19 84 views
2

我正在使用knockout.js與PHP,我試圖做一個GET請求,然後返回一個HTML /敲除窗體。這樣做的原因是因爲表單將被其他人使用,而不是複製/粘貼相當大的代碼塊,只是向我的服務器發出請求,而不是返回HTML/knockout的代碼。PHP引起的HTML導致語法錯誤引起的語法錯誤

//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

<center>標籤已經過時,需要逃脫單引號括起來像'\「afterkeydown \」'' – naththedeveloper

回答

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> 
     '; 
    } 
?> 
+2

數據綁定=「值:全名,valueUpdate:‘afterkeydown’'會打破HTML驗證。我想你是mea n'data-bind =「value:fullName,valueUpdate:\'afterkeydown \'」' – Turnerj

+1

謝謝,工作完美。 – user1104854

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> 
    '; 
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> 

「;

2

PHP是一種超文本預處理器,你可以寫原始的HTML,而無需使用echo [並獲得這樣的報價噩夢]:[!看怎麼這麼語法高亮現在工作得很好]

<?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; ?> 

BTW,因爲HTML 4

+0

謝謝,我不知道這種方法可以完成。然而,我會接受pXL擊敗你的迴應。 – user1104854