2013-06-29 3 views
0

В настоящее время у меня есть php-файл, который возвращает данные клиенту с помощью curl, я изменил клиент для ответа на JSON, чтобы справиться с проблемой, и все отлично работает. Но теперь можно вернуть данные как объект JSON. Он в настоящее время возвращает много html-тегов и т. Д., Которые меня не интересуют, я хотел бы вернуть только исходный текст в качестве примера, текст в этом формате C5: 3;изменить php curl на json response

Ниже приведен код, если кто-нибудь может указать мне в правильном направлении.

//set POST variables 
    $url = $_POST['url']; 
    unset($_POST['url']); 
    $fields_string = ""; 
    //url-ify the data for the POST 
    foreach($_POST as $key=>$value) { 
    $fields_string .= $key.'='.urlencode($value).'&'; 
    } 
    rtrim($fields_string,"&"); 
    //open connection 
    $ch = curl_init(); 
    //set the url, number of POST vars, POST data 
    $url .= '&'; 
    $url .= $fields_string; 
    curl_setopt($ch,CURLOPT_URL,$url); 
    //execute post 

    $string = curl_exec($ch); 

    curl_close($ch); 

Ищу вернуть объект JSON, как это,

$data = array('success'=> true,'message'=>'C5;3'); 

Это код клиента.

 $("button.checkStatus").click(function(){ 
      //This Ajax checks the current on/off status of the passed X10 code    
      $('img.checkStatus').each(function(i, obj) { 
       var element = $(this); 
       $x10Device = $(this).data("x10"); 
       var postData = "url=http://192.168.0.34:81/tenHsServer/tenHsServer.aspx?t=ab&f=DeviceStatus&d=" + $x10Device ; 



$.ajax({ 
    type: "POST", 
    dataType: "json", 
    data: postData, 
    beforeSend: function(x) { 
     if(x && x.overrideMimeType) { 
      x.overrideMimeType("application/json;charset=UTF-8"); 
     } 
    }, 
    url: 'urlencodeJson.php', 
    success: function(data) { 
     // 'data' is a JSON object which we can access directly. 
     if (data.success == true){ 
      $('#section1').html(data.message); 
      //$("x10").data('src','lightbulbon.png'); 
      element.attr('src','lightbulbon.png'); 
    } 
     else{ 
      $('#section2').html(data.message);  
      element.attr('src','lightbulbon.png'); 
     } 
    } 
    }); 
+0

Какой ответ вы вернетесь? –

+1

Давайте посмотрим некоторые из кода на целевой странице '$ url'. Если я правильно вас понимаю, вам нужно внести изменения. – TecBrat

ответ

0
<?php 
header("Content-Type: text/plain"); //if html elements exists in array, it will echo as plain text 

$yourarray = array('success'=> true,'message'=>'C5;3'); 

echo json_encode($yourarray); 
?> 
+0

LOL, я бы предположил, что его вопрос был неясным. Он сказал, что получает кучу html-тегов назад, но затем показывает массив. –

+0

Это то, что я делаю на стороне клиента. –

0

его очень просто сделать это просто использовать simple_html_dom это очень мощный PHP класс, который и можно разобрать HTML с PHP и получить результат после получения локон результата и может сделать некоторые вещи, как, что

$url = $_POST['url']; 
    unset($_POST['url']); 
    $fields_string = ""; 
    //url-ify the data for the POST 
    foreach($_POST as $key=>$value) { 
    $fields_string .= $key.'='.urlencode($value).'&'; 
    } 
    rtrim($fields_string,"&"); 
    //open connection 
    $ch = curl_init(); 
    //set the url, number of POST vars, POST data 
    $url .= '&'; 
    $url .= $fields_string; 
    curl_setopt($ch,CURLOPT_URL,$url); 
    //execute post 

    $string = curl_exec($ch); 

    curl_close($ch); 
    require 'simple_html_dom.php'; 
    $html= new simple_html_dom(); 
    $html->load($string); 
    foreach($html->find('div#selector') as $article) { 
$article['title']=$article->find('div#title',0)->plaintext; 
$article['photo']=$article->find('img#id',0)->atrr('id'); 
$article['content']=$article->find('div#content',0)->plaintext; 
} 

У вас есть php array(); u можете преобразовать в json array() php json_encode() , чтобы увидеть больше примеров посещения конвертировать curl result to JSON