jQuery передает несколько значений в Data и редактирует событие - PullRequest
0 голосов
/ 06 июня 2019

Я создаю php-файл для изменения файловых систем, и я хочу, чтобы этот php работал в фоновом режиме на сервере Ubuntu.HTML создает веб-страницу, но php не запускается вообще.

Я следил за видео на YouTube до этого момента, но мне нужно передать как новую, так и старую строку в php в части данных моего запроса, что я не уверен, как это сделать.

HTML-код

        <html>


    <head>
        <meta charset ='utf-8'/>
        <title> JQuery test </title>
        <script src= "https://ajax.googleapis.cpm/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    </head>


    <body>
    <td>Please type in the old string</td>
    <input id= 'Old_String' />
    <td>Please type in the new string</td>
    <input id= 'New_String' />
            <script>
                $(document).ready(function() {
                    $('#New_String').change(function(){  
                    $.ajax({
                        type: 'GET',
                        url: 'replace.php',
                        data: 'Old_String='+$('#Old_String').val(),
                         success : function(msg){
                            $('#results').html(msg);
                         }
                            })

                    });
                });
            </script>

            <table border="0">


            <div id="results' ></div>  

    </body>

Мой php-код

<?php
$valid = true;

if (!empty($_GET["Old_string"])) {
    $Old_string = $_GET["Old_string"];
} else {
    $valid = false;
    echo "Old string is Empty . Please Enter value to proceed\n";
}
if (!empty($_GET["New_string"])) {
    $New_string = $_GET["New_string"];
} else {
    $valid = false;
    echo "New string is Empty . Please Enter value to proceed\n";
}
if ($valid) {
    echo "all input correct\n";
    $myfile = fopen("word.txt", "r+") or die("Unable to open file!");
    if (flock($myfile, LOCK_EX)) {
        $text = fread($myfile, filesize("word.txt"));
        $count = 0;
        $newstring = str_ireplace($Old_string, $New_string, $text, $count);
        file_put_contents("word.txt", $newstring);
        echo "Number of changes made = " . $count;
        flock($myfile, LOCK_UN); // unlock the file
    } else {
        // flock() returned false, no lock obtained
        print "Could not lock $filename!\n";
    }
    fclose($myfile);
}
?>
}

По какой-то причине мой PHP вообще не запускается и вывод не выводитсяв результатах div.Я неправильно передаю значения или я не совсем правильно делаю это?Пожалуйста, любые предложения будут оценены.Я также пытаюсь переключить событие так, чтобы оно срабатывало при нажатии кнопки, если бы вы могли показать мне, как это сделать, и я был бы очень признателен.

Ответы [ 2 ]

0 голосов
/ 07 июня 2019

У вас было несколько ошибок.

Эти языки чувствительны к регистру.У вас были разные случаи для вагонов повсюду.Поэтому я сделал все строчными.

Вы не можете смешивать кавычки.Поэтому, когда вы начинаете с «вам нужно заканчивать».

Возможно, вам придется создать файл word.txt вручную.Обычно веб-сервер не имеет прав для создания файлов в корневом каталоге.

Браузер не обращает внимания на новые строки "\ n", которые необходимо использовать

Добавленонекоторые сообщения об ошибках в верхней части.

index.php

<html>
  <body
  <head>
    <meta charset ='utf-8'/>
    <title> JQuery test </title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
  </head>
  <table border="0">
    <tr>
      <td>Old String</td>
      <td align="center"><input type="text" name="old_string" size="30" id="old_string" /></td>
    </tr>
    <tr>
      <td>New String</td>
      <td align="center"><input type="text" name="new_string" size="30" id="new_string" /></td>
    </tr>
    <div id="results" ></div>  
  </table>
  </form>
   <script>
$(document).ready(function() {
    $('#new_string').change(function(){  
    $.ajax({
      type: 'GET',
      url: 'replace.php',
      data: 'old_string='+$('#old_string').val()+'&new_string='+$('#new_string').val(),
      success : function(msg){
        $('#results').html(msg);
      }
    })
  });
});
   </script>
  </body>
</html>

replace.php

  <?php

    error_reporting(E_ALL);
    ini_set('display_errors', '1');

    $valid = true;

    if (!empty($_GET['old_string']) and isset($_GET['old_string'])) {
        $old_string = $_GET['old_string'];
    } else {
        $valid = false;
        echo 'Old string is Empty . Please Enter value to proceed<br>';
    }
    if (!empty($_GET['new_string']) and isset($_GET['new_string'])) {
        $new_string = $_GET['new_string'];
    } else {
        $valid = false;
        echo 'New string is Empty . Please Enter value to proceed<br>';
    }
    if ($valid) {
        echo 'all input correct<br>';
        $myfile = fopen('word.txt', 'r+') or die('Unable to open file!<br>');
        if (flock($myfile, LOCK_EX)) {
            if(filesize('word.txt')>0){
                $text = fread($myfile, filesize('word.txt'));
            } else {
                $text = '';
            }
            $count = 0;
            $newstring = str_ireplace($old_string, $new_string, $text, $count);
            ftruncate($myfile,0);
            fwrite($myfile,$newstring,strlen($newstring));
            echo "Number of changes made = $count<br>";
            flock($myfile, LOCK_UN); // unlock the file
        } else {
            // flock() returned false, no lock obtained
            print 'Could not lock $filename!<br>';
        }
        fclose($myfile);
    }
0 голосов
/ 06 июня 2019

Вы ссылаетесь на $_GET["Old_string"] в своем PHP-коде, но передаете его по параметру строки запроса под ключом Old_String в этой строке.

data: 'Old_String='+$('#Old_String').val(),

последовательно, либо Old_string, либо Old_String в обоих местах.

Чтобы передать оба значения, я бы использовал простой объект json вместо создания строки запроса вручную.

data: { 'Old_String': $('Old_String').val(), 'New_String': $('New_String').val() }
...