2016-02-04 63 views
1

我試過了這個SO的答案。這不起作用。 test.php確實爲我提供了一個框,可以用提交按鈕輸入文本。火狐瀏覽器的開發者控制檯給了我這個消息之前,我提出:Ajax調用後端PHP腳本不起作用

「語法錯誤:缺少)後的參數列表

HTML文檔的字符編碼未聲明的文件將在某些瀏覽器配置亂碼的文字渲染。如果文檔包含US-ASCII範圍之外的字符,則必須在文檔或傳輸協議中聲明頁面的字符編碼。「

後,我在一個文本輸入並提交:

「A形式在windows-1252編碼,這不能編碼所有Unicode字符提交的,所以用戶輸入可能會損壞爲了避免這個問題,頁面應該。以便通過將頁面本身的編碼更改爲UTF-8或通過在表單元素上指定accept-charset = utf-8來以UTF-8編碼格式提交表單。「

有什麼建議嗎?

test.php的有這個片斷:

<form action="javascript:void(0);" method="post"> 
    <input type="text" name="user" placeholder="enter a text" /> 
    <input type="submit" value="submit" /> 
</form> 

<script type="text/javascript"> 
    $("form").submit(function(){ 
     var str = $(this).serialize(); 
     $.ajax('getResult.php', str, function(result){ 
      alert(result); // the result variable will contain any text echoed by getResult.php 
     } 
     return(false); 
    }); 
</script> 

getResult.php有這樣的:

<?php 
    echo "The name you typed is: " . $_REQUEST['user']; 
?> 
+1

您是否檢查了控制檯以查看響應中發生了什麼?在開發人員工具 – Haris

+0

@Harry:在參數列表「 – user523234

+0

」之後有一個額外的錯誤:「SyntaxError:missing」馬上就注意到您缺少a)。 – JoeL

回答

3

首先,你錯過了一個右括號這裏,

$.ajax('getResult.php', str, function(result){ 
     alert(result); // the result variable will contain any text echoed by getResult.php 
    } 
    ^missing); 

其次,使用POST請求而不是AJAX,這樣的:

$("form").submit(function(){ 
    var str = $(this).serialize(); 
    $.post('getResult.php', str, function(result){ 
     alert(result); 
    }); 
    return(false); 
}); 

或者,如果你想使用AJAX請求然後執行此操作:

$("form").submit(function(){ 
    var str = $(this).serialize(); 
    $.ajax({ 
     type: 'POST', 
     url: 'getResult.php', 
     cache: 'false', 
     data: str, 

     success: function(result){ 
      alert(result) 
     } 
    }); 
    return(false); 
}); 
+0

如果我把);根據你的建議,我會發現一個新的錯誤:ReferenceError:$未定義 – user523234

+0

@ user523234可能你沒有包含jQuery庫。在腳本之前添加jQuery庫,以便可以識別$,如下所示:'' –

+0

這就是問題所在自從我使用SSL。 Firefox將阻止任何不使用ssl的調用。 https://code.jquery ....將修復。格拉西亞斯! – user523234

2

您應該使用$ _ POST [ '用戶']而不是$ _REQUEST [ '用戶']中您的getResult.php代碼,如下所示:

<?php 
    echo "The name you typed is: " . $_POST['user']; 
?> 

警告消息說您沒有使用適當的文本編碼。一些通過表單發送的字符不是「windows-1252」編碼(例如Emojis)。 我建議你改變你的整個網站的編碼,通過設置編碼元標記你的頁面的頭部內,並移除其他編碼的標籤,你可能有:

<meta charset="UTF-8">

但是,如果你只是想改變編碼在你的形式,我不推薦,使用此代碼:

<form action="javascript:void(0);" method="post" accept-charset=utf-8> 
 
    <input type="text" name="user" placeholder="enter a text" /> 
 
    <input type="submit" value="submit" /> 
 
</form> 
 

 
<script type="text/javascript"> 
 
    $("form").submit(function(){ 
 
     var str = $(this).serialize(); 
 
     $.ajax('getResult.php', str, function(result){ 
 
      alert(result); // the result variable will contain any text echoed by getResult.php 
 
     } 
 
     return(false); 
 
    }); 
 
</script>