无法通过ajax jQuery向PHP页面发送信息

时间:2014-06-20 13:26:08

标签: javascript php jquery ajax

我在发送信息时遇到了jQuery ajax的问题​​。

PHP代码应该检测希伯来字母,并根据转录规则将它们转换为阿拉伯字母。

这是我的代码(jQuery代码):

<!DOCTYPE html>
<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
        <script>
            $(document).ready(function() {
                $("#input").keyup(function() {
                    var input = $("#input").val();
                    $("#text").load("changetext.php", {input:input});
                });
            });
        </script>
    </head>
    <body dir="rtl">
        <center>
            <input type="text" id="input" />
            <div id="text"></div>
            <button id="go">חפש!</button>
        </center>
     </body>
</html>

这是PHP页面(字母转换发生的地方):

<?php

$input = $_POST['input'];

str_replace("א", "ا", $input);
str_replace("ב", "ب", $input);
str_replace("ג'", "ج", $input);
str_replace("ד", "د", $input);
str_replace("ד'", "ذ", $input);
str_replace("ה", "ه", $input);
str_replace("ו", "و", $input);
str_replace("ז", "ز", $input);
str_replace("ח", "ح", $input);
str_replace("ח'", "خ", $input);
str_replace("ט", "ط", $input);
str_replace("ט'", "ظ", $input);
str_replace("י", "ي", $input);
str_replace("כ", "ك", $input);
str_replace("ל", "ل", $input);
str_replace("מ", "م", $input);
str_replace("נ", "ن", $input);
str_replace("ס", "س", $input);
str_replace("ע", "ع", $input);
str_replace("פ", "ف", $input);
str_replace("צ", "ص", $input);
str_replace("ק", "ق", $input);
str_replace("ר", "ر", $input);
str_replace("ש", "ش", $input);
str_replace("ת", "ت", $input);
str_replace("ת'", "ث", $input);
str_replace("ס'", "ض", $input);
str_replace("ט'", "ظ", $input);
str_replace("ר'", "غ", $input);
str_replace("א'", "ﺀ", $input);

echo $input;
?>

此代码不起作用,我不知道为什么。

2 个答案:

答案 0 :(得分:0)

我认为你有一些编码问题

转到Here

从链接中获取

这是需要的答案,但每个人只回答了许多的第一部分

第1步

  • 您无法在unicode文档中使用多语言字符..将文档转换为UTF-8文档
  

高级编辑器不会让你变得简单......去低级......使用   记事本将文档保存为meName.html&amp;改变这种窘迫   输入UTF-8

第2步

在你的html页面中提到你要使用这些字符

meta http-equiv="Content-Type" content="text/html;charset=UTF-8" >

第3步

  • 当您输入一些字符时,请确保您的容器标记具有以下2个属性集

    DIR = 'RTL' 郎= 'AR'

第4步

  • 获取某些特定工具\编辑器或在线编辑器中的字符,就像我使用Arabic-Keyboard.org
  • 一样

例如

ربزدنيعلما

注意:字体类型,字体系列,字体设置对特殊字符没有影响

答案 1 :(得分:0)

我认为你所做的事情可能不会非常有效。 load()方法需要往返服务器,并且异步启动,因此对文本div的更新不一定对应于用户击键。在我看来,你应该:

  1. 如果可能,请不要使用keyup事件,并执行一次加载。 OR
  2. 如果您想获得即时反馈,请在客户端完成所有工作。
  3. 以下是后者的一个例子:

    $( document ).ready(function() {
        var replacements = {ا: '\u05D0', ب: '\u05D1', ج: '\u05D2\u05F3', د: '\u05D3', ذ: '\u05D3\u05F3', ه: '\u05D4', و: '\u05D5', ز: '\u05D6', ح: '\u05D7', خ: '\u05D7\u05F3', ط: '\u05D8', ظ: '\u05D8\u05F3', ي: '\u05D9', ك: '\u05DB', ل: '\u05DC', م: '\u05DE', ن: '\u05E0', س: '\u05E1', ع: '\u05E2', ف: '\u05E4', ص: '\u05E6', ق: '\u05E7', ر: '\u05E8', ش: '\u05E9', ت: '\u05EA', ث: '\u05EA\u05F3', ض: '\u05E1\u05F3', ظ: '\u05D8\u05F3', غ: '\u05E8\u05F3', ﺀ: '\u05D0\u05F3'};
        $('#input').keyup(function() {
            var input = $('#input').val();
            var txt = input.replace(/./g, function(char) {return char in replacements ? replacements[char] : char})
            $('#text').text(txt);
        });
    });
    

    修改

    我终于想出了一个使用你的角色地图的rtl例子。基本上,我使用希伯来字符的unicode值创建了一个关联数组。该数组用于替换输入val中的字符。然后使用jQuery中的text()方法更新#text div。似乎运作良好,虽然不可否认,我对阿拉伯语或希伯来语一无所知,所以我无法确定它是否准确。

    如果你想看到它的实际效果,可以使用 fiddle