簡體   English   中英

將文本輸入變量傳遞給PHP以進行Div加載

[英]Pass Text Input Variable to PHP for Div Loading

我有一個網頁,我想要一個輸入框和一個搜索按鈕。 它將搜索電影匹配輸入框。 搜索和解析是通過php完成的,但是我希望結果顯示在原始頁面上,作為更新的div。 我有當前的html代碼:

<script type="text/javascript">
    function goSearch(){
        $("#Moviesearchdiv").load("MovieSearch.php");
     }
</script>

<form action="JavaScript:goSearch()" method="POST">
    <input type="text" name="moviename">
    <input type="submit" name="submit" value="Search" >
</form>

<div id="Moviesearchdiv"></div>

我的MovieSearch.php看起來像這樣:

<?php
$themovie = $_POST["moviename"];
$myurl = "http://my-url-here.com/search/?q={$themovie}";

    $response = file_get_contents($myurl);
    $result = json_decode($response, true);
    $result=$result['movies'];

    $totality = count($result);

    for ($i = 0; $i <$totality; $i++) {
        $mymovietitle = $result[$i]['original_title'];
        $myposter = $result[$i]['poster_original'];
        echo "<li><img src={$myposter} >{$mymovietitle}</li>";
    }
?>

當我按原樣運行時...什么都沒有發生。 如果我手動將MovieSearch.php中的第一個變量更改為類似以下內容:

$themovie = "Rocky";

這將按預期正確加載我的div中的所有Rocky電影,而無需刷新頁面。

如何正確將“電影名稱”輸入傳遞給php?

任何幫助和建議,我們將不勝感激。

謝謝,

赫爾南

a)您沒有將數據傳遞給頁面(.load中的第二個參數應該是表單數據),因此$ themovie的值為null。

b)即使您的表單上有method =“ POST”,使用.load仍假定為GET,除非提供的數據是對象。 提供表單數據並采用對象格式(以POST形式發送)的一種方法是:

function goSearch(){
   $("#Moviesearchdiv").load("MovieSearch.php",$('#yourFormId').serialize());
}

請注意,您將需要在表單中添加一個ID,並用它替換#yourFormId。

在調試這些類型的AJAX調用時,首先需要知道您嘗試與之通信的頁面位於您的AJAX調用所認為的位置。 您知道這是因為當您填寫$ themovie時,您會獲得結果,也可以在瀏覽器的開發人員工具中進行檢查。

其次,您需要確定要發送的數據是您所想的,您可以根據所使用的方式返回$ _POST或$ _GET的print_r()或var_dump()進行檢查(或認為您正在使用類似在這種情況下)。

這兩個步驟將幫助您解決所發現問題的很大一部分。

一些想法:

  • 您實際上在哪里將文本輸入的內容發送到php腳本?

  • 在將其附加到url之前,請嘗試對從$_POST獲得的結果使用trim()

  • 在變量$_POST上執行var_dump()來查看服務器即將發生的事情-您可能會感到驚訝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM