Vuejs从PHP / MySQL获取请求不起作用

时间:2018-07-18 00:42:51

标签: php mysql vue.js

我正在编写代码以从MySQL数据库获取数据并使用Vuejs,

this.$http.get("api.php?action=read")
        .then(response => {
          console.log(response);
        }, error => {
          console.log(error);
        });

此请求返回所有api.php内容,但不返回数据。

这是api.php文件

<?php

  require_once('include/config.php');

  $res = (['error' => false]);

  $action = 'read';

  if (isset($_GET['action'])) {
    $action = $_GET['action'];
  }

  if($action == 'read') {
      $images = array();

      $query = 'SELECT * FROM images ORDER BY id DESC';
      $select_images = mysqli_query($connection, $query);
      while($image = mysqli_fetch_assoc($select_images)) {
        array_push($images, $image);
      }
      echo json_encode($images);
  }

  mysqli_close($connection);
  header("Content-type: application/json");
  echo json_encode($images);
  die();
?>

请问有人可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

有效,

我添加了

header("Access-Control-Allow-Origin: *");

到API文件

并从localhost / vuejs链接发出get请求, 不像localhost:8080 并且有效

谢谢

答案 1 :(得分:1)

在php中包含标题。注意:在返回任何内容之前,应该是第一行。

  enter code here ' Microsoft SQL Server Integration Services Script Task
 ' Write scripts using Microsoft Visual Basic 2008.
 ' The ScriptMain is the entry point class of the script.

Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime
Imports System.IO

<Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute> _
<System.CLSCompliantAttribute(False)> _
Partial Public Class ScriptMain
Inherits 
Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase

Enum ScriptResults
    Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success
    Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
End Enum


' The execution engine calls this method when the task executes.
' To access the object model, use the Dts property. Connections, variables, events,
' and logging features are available as members of the Dts property as shown in the following examples.
'
' To reference a variable, call Dts.Variables("MyCaseSensitiveVariableName").Value
' To post a log entry, call Dts.Log("This is my log text", 999, Nothing)
' To fire an event, call Dts.Events.FireInformation(99, "test", "hit the help message", "", 0, True)
'
' To use the connections collection use something like the following:
' ConnectionManager cm = Dts.Connections.Add("OLEDB")
' cm.ConnectionString = "Data Source=localhost;Initial Catalog=AdventureWorks;Provider=SQLNCLI10;Integrated Security=SSPI;Auto Translate=False;"
'
' Before returning from this method, set the value of Dts.TaskResult to indicate success or failure.
' 
' To open Help, press F1.

Public Sub Main()
    Dim file_stream As New FileStream(CType(ReadVariable("filepath"), String) + "AIR_FEE1.TRN", FileMode.Append)
    Using w As New StreamWriter(file_stream, Text.Encoding.UTF8)
        w.WriteLine("T|" + CType(ReadVariable("Count"), String))
    End Using
    Dim FName As String
    Dim LFName As String
    FName = CType(ReadVariable("filename"), String)
    LFName = CType(ReadVariable("logfile"), String)
    WriteVariable("StaticLogFileName", LFName)
    WriteVariable("StaticFileName", FName)
    Dim file_stream1 As New FileStream("StaticFileName", FileMode.Create)
    file_stream.Close()
    Dts.TaskResult = ScriptResults.Success
End Sub
Private Function ReadVariable(ByVal varName As String) As Object
    Dim result As Object
    Try
        Dim vars As Variables
        Dts.VariableDispenser.LockForRead(varName)
        Dts.VariableDispenser.GetVariables(vars)
        Try
            result = vars(varName).Value
        Catch ex As Exception
            Throw ex
        Finally
            vars.Unlock()
        End Try
    Catch ex As Exception
        Throw ex
    End Try
    Return result
End Function

Private Sub WriteVariable(ByVal varName As String, ByVal varValue As Object)
    Try
        Dim vars As Variables
        Dts.VariableDispenser.LockForWrite(varName)
        Dts.VariableDispenser.GetVariables(vars)
        Try
            vars(varName).Value = varValue
        Catch ex As Exception
            Throw ex
        Finally
            vars.Unlock()
        End Try
    Catch ex As Exception
        Throw ex
    End Try
End Sub

End Class

并尝试使用命令提示符运行php代码1st:

<?php
header("Access-Control-Allow-Origin: *");

注意:尝试使用其他端口号,因为对于我来说,它无法从运行我的vueProject的同一8080端口获取api。 这将使用您的php创建一个api端点。哪个将收听http://localhost:8888/projectname/api.php

现在,当使用axios.get(http://localhost:8888/projectname/api.php)时会得到api的响应。我没有axios模块就没有尝试过,但我想它应该可以工作。

php -S localhost:8888 ajaxfile.php

此功能对我有用。注意:在这种情况下,axios很方便。希望对您有所帮助。

答案 2 :(得分:0)

尝试Task.StartNew获取响应数据:

response.body