Я хочу отобразить изображение в конкретном td после успеха ajax, но он не отображает изображение, которое он не работает, кто-то подскажет мне, я ошибался ниже, это мой код
Ajax:
<script> $(document).ready(function() { $('.edit1').on('change', function() { arr = $(this).attr('class').split(" "); var clientid = document.getElementById("client").value; account_id = document.getElementById("account_id").value; $(this).parent().next().find('input:checkbox').attr("checked", true); $.ajax({ type: "POST", url: "clientnetworkpricelist/routestatusupdate.php", data: "value=" + $(this).val() + "&rowid=" + arr[2] + "&field=" + arr[1] + "&clientid=" + clientid + "&account_id=" + account_id, success: function(result) { data = jQuery.parseJSON(result); //added line var obj = data; $('#CPH_GridView1_Status' + arr[2]).empty(); $('#CPH_GridView1_Status' + arr[2]).append(data.status); $('.ajax').html($(this).val()); $('.ajax').removeClass('ajax'); } }); }); }); </script>
routestatusupdate.php
{ /** some function for display the result **/ $result=array(); $result['status']='<img src="image/' . $status . 'f.png" />'; $result['seleniumrouteupdate']=$seleniumrouteupdaterow; $result['routeupdate']=$routeupdate; echo json_encode($result); }
мой метод routeestatusupdate.php выглядит так:
{"status":"<img src=\"image\/Increasef.png\" \/>","seleniumrouteupdate":"1","routeupdate":"100"}{"status":"<img src=\"image\/Decreasef.png\" \/>","seleniumrouteupdate":"1","routeupdate":"100"}
Эта строка не нужна, так как данные уже находятся в формате JSON:
data = jQuery.parseJSON(result); //added line
Удалив это, вам также необходимо обновить свой var следующим образом:
var obj = result;
Во-вторых, ваш JSON находится в неправильном формате .. он должен выводиться следующим образом:
[{"status":"<img src=\"image\/Increasef.png\" \/>","seleniumrouteupdate":"1","routeupdate":"100"},{"status":"<img src=\"image\/Decreasef.png\" \/>","seleniumrouteupdate":"1","routeupdate":"100"}]
Вероятно, у вас есть этот echo json_encode ($ result); в двух местах вам нужно объединить их в один массив ответов и echo json_encode ($ results);
Вот пример того, как вы можете это сделать (PHP):
function something($status, $seleniumrouteupdaterow,$routeupdate) { $result=array(); $result['status']='<img src="image/' . $status . 'f.png" />'; $result['seleniumrouteupdate']=$seleniumrouteupdaterow; $result['routeupdate']=$routeupdate; return $result; } // ....PHP code $json = array(); $json[] = something($status, $seleniumrouteupdaterow,$routeupdate); // ... some other code $json[] = something($status, $seleniumrouteupdaterow,$routeupdate); echo json_encode($json);
И в конце вам также нужно обновить эту строку:
$('#CPH_GridView1_Status' + arr[2]).append(data.status);
Поскольку data.status – это массив, вам нужно настроить целевой элемент (первый или второй):
$('#CPH_GridView1_Status' + arr[2]).append(data.status[0]);
Это добавит ваше первое сообщение о статусе.