2017-02-08 2 views
1

Я бы поискал решение, но я не знаю, что именно я должен искать.jQuery + PHP. Запрос/ответ

Задача состоит в том, чтобы захватить тексты с ID (# ftext_1, ..._ 2, ..._ 3, ..._ 4) в html-файле и отправить их в файл php. После некоторых манипуляций с текстами в php-файле я должен вставить их обратно в свой ID в html-файле. Вот код:

var text_1_Replace = $('#ftext_1').text(); 
var text_2_Replace = $('#ftext_2').text(); 
var text_3_Replace = $('#ftext_3').text(); 
var text_4_Replace = $('#ftext_4').text(); 

$('#ID').on('click', function(){ 
var text= { 
     ftext_1: text_1_Replace, 
     ftext_2: text_2_Replace, 
     ftext_3: text_3_Replace, 
     ftext_4: text_4_Replace 
    } 
    var targetFile = 'ajax/file.php'; 

    $.ajax({ 
     method: 'post', 
     url: targetFile , 
     data: JSON.stringify(text), 
     contentType: 'application/JSON' 
    }).done(function(data) { 
     console.log(data); 
    }); 
}); 

Как редактировать .done функции размещать новые тексты в их старом идентификаторов (# ftext_1, ..._ 2, ..._ 3, ..._ 4)? Переменная с массивом text - это $ result.

поэтому ответ:

}).done(function(data) { 
     var text = JSON.parse(data); 

     var text1 = text.ftext_1; 
     var text2 = text.ftext_2; 
     var text3 = text.ftext_3; 
     var text4 = text.ftext_4; 
     $('#ftext_1').text(text1); 
     $('#ftext_2').text(text2); 
     $('#ftext_3').text(text3); 
     $('#ftext_4').text(text4); 

Таким образом, последнее обновление для темы: Реальный и хороший ответ:

.done(function(data) { 
     var text = JSON.parse(data); 
     $.each(text, function(i, val){ 
      $("#" + i).text(val); 
     }); 

Этот код подходит мой вопрос в этой теме , Спасибо всем, кто ответил!

+0

Я действительно не понял, чего вы пытаетесь достичь, можете ли вы разместить HTML-код? возможно, это прояснит ваш вопрос. –

+0

Это зависит от вашего json, возвращаемого php, но вы можете получить к нему доступ в виде массива. IE: данные ['ftext_1']. – zenko

+0

Файл @MehdiBounya html состоит из 1k + строк кода. Моя часть '

text
' и так далее. Я беру этот текст, отправляю его на php, затем php отправляет текст в API Google и получает его обратно –

ответ

2

лучше для вас будет посылают с именем свойства, которое выглядит как этот

$.ajax({ 
    method: 'post', 
    url: targetFile , 
    data: {data: text}, 
    dataType: "json", 
    success: function(response){ 
     $.each(response, function(element){ 
      $("#"+element.name).text(element.text); 
     }); 
    } 
}); 

Затем в PHP вы можете легко перебирать данные после

<?php 
$data = $_POST['data']; 

$response = [ 

]; 
foreach($data as $elementName => $text){ 
// some text management 

    $response[] = ['name' => $elementName, 'text' => $text]; 
} 

return json_encode($response); 
+0

Но ему нужен dataType: «json» в jquery, поскольку вы return json – eiipaw

+0

Вы правы, добавили его в $ .ajax call config –

1

Когда вы меняете полученные значения в PHP вы поместите их в массив, так что вы можете назвать это позже легко

PHP

$values = array("one"=>5, 
       "two"=>"something", 
       "three"=>$something); 
echo json_encode($values); 

Вам нужно добавить

dataType:'json' 

в JQuery, так как вы возвращаетесь json

JQuery

$.ajax({ 
    method: 'post', 
    url: targetFile , 
    data: JSON.stringify(text), # or data: {"value1":value,"value2":value2}, 
    contentType: 'application/JSON', 
    dataType:'json', 
    success: function(response){ 
     console.log(response.one); #Will console 5 
     console.log(response.two); #Will console "something" 
     console.log(response.three); #Will console whatever $something holds in php 
    } 
    }); 

Вы можете назвать это, как вы его (ответ) или (MyData) ... А потом вы просто наберите response.yourdata (что вы объявлены в PHP)