2015-05-08 78 views
0

這是請求通過GET請求時跳過特殊字符

function AssignWork(){ 
    var projectId = $jq(".dmProjName").val(), 
     empId = $jq(".nameEmp").val(), 
     assignWork = $jq(".workDescription").val(), 
     workDate = $jq(".workDate").val(); 
    var go_path = "Employee_Switch_Person.php?action=assignWork&vars=4&var1="+empId+"&var2="+projectId+"&var3="+assignWork+"&var4="+workDate; 
    $jq.get(go_path,{},function(data){ 
     if(data ==1){ 
      alert("Successfully Assigned!"); 
      showAssignWork(0); 
     } 
    }); 
} 

這是php

的JS \ jQuery函數
function assignWork($empId,$projectId,$assignWork,$workDate){ 
    //echo $workDate; 
    global $con; 
    date_default_timezone_set("Asia/Karachi"); 
    //echo "date format".date('Y-m-d H:i:s'); 
    //echo $empId.",".$projectId.",".$assignWork.",".$workDate; 
    $sql = "INSERT INTO `tblempassignwork` (`EmpId`, `AssignWork`, `AssignById`, `ProjectId`, `WorkDate`, `AssignDateTime`) 
      VALUES($empId,'".$assignWork."',".$_COOKIE["userID"].",".$projectId.",'".$workDate."','".date('Y-m-d H:i:s')."')"; 
    $result = mysql_query($sql,$con) or die(mysql_error()); 
    echo $result; 
} 

問題是

assignWork = $jq(".workDescription").val() 

可以包含一個帶有雙引號,單引號,散列或任何特殊字符的字符串。如果我使用單引號或散列,那麼它顯示爲

您在SQL語法中有錯誤;請檢查對應於您的MySQL服務器版本的手冊,以獲取正確的語法以使用附近的's',並舉例說明',3,77,'2015-05-08','2015-05-08 09:51:17' )'在第2行

因爲我在字符串中鍵入單引號。所以如何在通過獲取請求時跳過特殊字符。

回答

0

在jQuery的,你可以用-

assignWork=assignWork.trim().replace(/[^a-z0-9]+/gi, '-'); 

替換所有的非字母數字字符或者你可以用空格代替它或什麼都套件程序的最佳:)

+0

當我取回這個數據,我就怎樣再次 –

+0

你可以有一個備份變量說'var assignWork_original = assignWork' 然後你可以做上面的修整 – Manikiran

0

如果你想要排除特殊字符

解決方案已經在計算器 javascript regexp remove all special characters

var outString = sourceString.replace(/[`[email protected]#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, ''); 
+0

當我再次檢索這個數據時我會做什麼 –

+0

一旦你替換任何字符串的字符很難再次檢索。 你必須在某處存儲該值。如果你想要臨時值,然後存儲在會話變量。 –

0

更改此:

assignWork = $jq(".workDescription").val(), 

要這樣:

assignWork = escape($jq(".workDescription").val()), 

恕我直言,是不安全的TE unscaped字符串存儲在數據庫中,當你在javascript讀回,你剛纔CAND 「unes​​cape」它。

JavaScript unescape() Function

否則,如果你想,只是它在PHP解碼使用:

$assignWork = urldecode($assignWork); 

Javascript's 「unescape」 in PHP

+0

我使用escap,但問題仍然存在,當我在WorkDescription字符串中使用單引號時 –