Heim > Backend-Entwicklung > PHP-Tutorial > javascript – js ruft das Rückgabeergebnis von PHP ab

javascript – js ruft das Rückgabeergebnis von PHP ab

WBOY
Freigeben: 2016-08-04 09:21:58
Original
2287 Leute haben es durchsucht

<code> $.ajax({
            url: '/ajax.php',
            type: 'POST',
            contentType: 'application/json; charset=UTF-8',
            crossDomain: true,
            dataType: 'json',
            data: JSON.stringify(data),
            success: function(response) {
            
                alert(response);
                console.log(response);

                $("#spinny").hide();

                var data = response.hits.hits;
                console.log(data);
                var source = null;

                if (data.length > 0) {
                    $("#resultsHeader").html(data.length + " Results").show();
                    for (var i = 0; i < data.length; i++) {
                        source = data[i].fields;
                    }

                } else {
                  //$("#resultsHeader").html("No Results").show();
                    showErrorMessage("#error-container", "<strong>Ooops!</strong> No results found! Please try again.","alert-danger", true, 3000);
                }

            },
            error: function(jqXHR, textStatus, errorThrown) {
                var jso = jQuery.parseJSON(jqXHR.responseText);
                error_note('section', 'error', '(' + jqXHR.status + ') ' + errorThrown + ' --<br />' + jso.error);
            }
            </code>
Nach dem Login kopieren
Nach dem Login kopieren

Der obige js-Übermittlungsprozess.

Das Folgende ist der Code von ajax.php

<code>

<?php
    
    require_once('bootstrap.php');
    
    $url                   = ELASTICSEARCH_URL.'/test/_search';
    $content               = file_get_contents('php://input');
    $ch                    = curl_init($url);
    curl_setopt($ch,       CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch,       CURLOPT_POSTFIELDS, $content);
    curl_setopt($ch,       CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,       CURLOPT_CONNECTTIMEOUT, 0);
    curl_setopt($ch,       CURLOPT_TIMEOUT, 5000);
    curl_setopt($ch,       CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($content)));
    
    $result= curl_exec($ch);
    $arr = json_decode($result);
    if ($arr->hits->total>0) {
        foreach ($arr->hits->hits as $es) {
            $source = $es->_source;
            foreach ($source as $key => $value) {
                echo "$key".":"."$value";
            }
        }
    }
    ?>
                
                </code>
Nach dem Login kopieren
Nach dem Login kopieren

Problem: js kann normalerweise Anfragen an PHP generieren, aber der Rückgabewert von PHP kann nicht abgerufen werden, unabhängig davon, ob es sich um $result oder $key handelt.
Wenn Sie sich den js-Fehlerbericht ansehen, erhalten Sie die folgende Eingabeaufforderung

<code>"VM2900:1 Uncaught SyntaxError: Unexpected token y in JSON at position 1"
            </code>
Nach dem Login kopieren
Nach dem Login kopieren

Antwortinhalt:

<code> $.ajax({
            url: '/ajax.php',
            type: 'POST',
            contentType: 'application/json; charset=UTF-8',
            crossDomain: true,
            dataType: 'json',
            data: JSON.stringify(data),
            success: function(response) {
            
                alert(response);
                console.log(response);

                $("#spinny").hide();

                var data = response.hits.hits;
                console.log(data);
                var source = null;

                if (data.length > 0) {
                    $("#resultsHeader").html(data.length + " Results").show();
                    for (var i = 0; i < data.length; i++) {
                        source = data[i].fields;
                    }

                } else {
                  //$("#resultsHeader").html("No Results").show();
                    showErrorMessage("#error-container", "<strong>Ooops!</strong> No results found! Please try again.","alert-danger", true, 3000);
                }

            },
            error: function(jqXHR, textStatus, errorThrown) {
                var jso = jQuery.parseJSON(jqXHR.responseText);
                error_note('section', 'error', '(' + jqXHR.status + ') ' + errorThrown + ' --<br />' + jso.error);
            }
            </code>
Nach dem Login kopieren
Nach dem Login kopieren

Der obige js-Übermittlungsprozess.

Das Folgende ist der Code von ajax.php

<code>

<?php
    
    require_once('bootstrap.php');
    
    $url                   = ELASTICSEARCH_URL.'/test/_search';
    $content               = file_get_contents('php://input');
    $ch                    = curl_init($url);
    curl_setopt($ch,       CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch,       CURLOPT_POSTFIELDS, $content);
    curl_setopt($ch,       CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,       CURLOPT_CONNECTTIMEOUT, 0);
    curl_setopt($ch,       CURLOPT_TIMEOUT, 5000);
    curl_setopt($ch,       CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($content)));
    
    $result= curl_exec($ch);
    $arr = json_decode($result);
    if ($arr->hits->total>0) {
        foreach ($arr->hits->hits as $es) {
            $source = $es->_source;
            foreach ($source as $key => $value) {
                echo "$key".":"."$value";
            }
        }
    }
    ?>
                
                </code>
Nach dem Login kopieren
Nach dem Login kopieren

Problem: js kann normalerweise Anfragen an PHP generieren, aber der Rückgabewert von PHP kann nicht abgerufen werden, unabhängig davon, ob es sich um $result oder $key handelt.
Wenn Sie sich den js-Fehlerbericht ansehen, erhalten Sie die folgende Eingabeaufforderung

<code>"VM2900:1 Uncaught SyntaxError: Unexpected token y in JSON at position 1"
            </code>
Nach dem Login kopieren
Nach dem Login kopieren

Der von PHP zurückgegebene Wert liegt nicht im JSON-Format vor und js kann ihn nicht analysieren

echo json_encode()

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage