نوب
3 سال پیش توسط نوب مطرح شد
7 پاسخ

کار نکردن کد ارسال اطلاعات فیلد فرم با اجاکس در لاراول

@ali.bayat
@Rp76
سلام
کد زیر را زدم ولی وقتی request را dd میکنم مقدار ارسال شده فرم را نشون نمیده و یکسری اطلاعات دیگه مربوط به هدرها و .... نشون میده

    <script>
        function showPrice(valuess) {
            if (valuess == "") {
                document.getElementById("order_price").innerHTML = "";
                return;
            }
            if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp = new XMLHttpRequest();
            } else {// code for IE6, IE5
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange = function () {
                if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                    document.getElementById("order_price").innerHTML = xmlhttp.responseText;
                }
            };
            xmlhttp.open("get", "check_price/" + valuess, true);
            xmlhttp.send();
        }
    </script>
<div class="col-lg-4">
                            <div class="form-label-group position-relative has-icon-left ">
                                <select class="form-control select2" name="product" onchange="showPrice(this.value)">
                                    @foreach($products as $product)
                                        <option value="{{$product->id}}">{{$product->title}}</option>
                                    @endforeach
                                </select>
                                @error('accounting_id') <span class="text-danger">{{$message}}</span> @enderror
                            </div>
                            <div class="text-dark rounded p-1" id="order_price"></div>
                        </div>

بعد ا ارسال اطلاعات این چیزیه که dd نشون میده

Illuminate\Http\Request {#43
  #json: null
  #convertedFiles: null
  #userResolver: Closure($guard = null) {#1310
    class: "Illuminate\Auth\AuthServiceProvider"
    this: Illuminate\Auth\AuthServiceProvider {#141 …}
    use: {
      $app: Illuminate\Foundation\Application {#2 …}
    }
    file: "E:\Laravel-sites-design\www\hesabdari\vendor\laravel\framework\src\Illuminate\Auth\AuthServiceProvider.php"
    line: "96 to 98"
  }
  #routeResolver: Closure() {#1319
    class: "Illuminate\Routing\Router"
    this: Illuminate\Routing\Router {#26 …}
    use: {
      $route: Illuminate\Routing\Route {#1233 …}
    }
    file: "E:\Laravel-sites-design\www\hesabdari\vendor\laravel\framework\src\Illuminate\Routing\Router.php"
    line: "665 to 667"
  }
  +attributes: Symfony\Component\HttpFoundation\ParameterBag {#45
    #parameters: []
  }
  +request: Symfony\Component\HttpFoundation\InputBag {#51
    #parameters: []
  }
  +query: Symfony\Component\HttpFoundation\InputBag {#51}
  +server: Symfony\Component\HttpFoundation\ServerBag {#47
    #parameters: array:28 [
      "DOCUMENT_ROOT" => "E:\Laravel-sites-design\www\hesabdari\public"
      "REMOTE_ADDR" => "127.0.0.1"
      "REMOTE_PORT" => "5688"
      "SERVER_SOFTWARE" => "PHP 7.4.9 Development Server"
      "SERVER_PROTOCOL" => "HTTP/1.1"
      "SERVER_NAME" => "127.0.0.1"
      "SERVER_PORT" => "8000"
      "REQUEST_URI" => "/dashboard/check_price/3"
      "REQUEST_METHOD" => "GET"
      "SCRIPT_NAME" => "/index.php"
      "SCRIPT_FILENAME" => "E:\Laravel-sites-design\www\hesabdari\public\index.php"
      "PATH_INFO" => "/dashboard/check_price/3"
      "PHP_SELF" => "/index.php/dashboard/check_price/3"
      "HTTP_HOST" => "localhost:8000"
      "HTTP_CONNECTION" => "keep-alive"
      "HTTP_SEC_CH_UA" => "" Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90""
      "HTTP_SEC_CH_UA_MOBILE" => "?0"
      "HTTP_USER_AGENT" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
      "HTTP_ACCEPT" => "*/*"
      "HTTP_SEC_FETCH_SITE" => "same-origin"
      "HTTP_SEC_FETCH_MODE" => "cors"
      "HTTP_SEC_FETCH_DEST" => "empty"
      "HTTP_REFERER" => "http://localhost:8000/dashboard/work"
      "HTTP_ACCEPT_ENCODING" => "gzip, deflate, br"
      "HTTP_ACCEPT_LANGUAGE" => "en-US,en;q=0.9,fa;q=0.8"
      "HTTP_COOKIE" => "XSRF-TOKEN=eyJpdiI6Im1jWXAyYU5zaWNBbE9QaVRhWHEwZHc9PSIsInZhbHVlIjoiQitJV0xiaEVRc2tDWFVNZHN6RTJaQVFFNExmSWZudFZBb3RxdzVhdFJQdTI4bmFCYXBZYmtzcm1tbzFxYS8vR0xaTGNmTk9hemM5dDMvbzBRUmV5K1E1UVVORWRzR0RJeUNUWkkrcmNXeDdYMWlhYmU5WUE5U3lveXFoNldIenciLCJtYWMiOiI0MDA1MDM0NTE0Y2M2M2RjZjZmM2ZmNThkNzU2NTczZDkxNjFmMzRiOTgzMjY3ODJhMjQ3MDI3MDY2MWJkMTAzIn0%3D; laravel_session=eyJpdiI6IkN4ME9RUTl0SGVQNWtORjlRdjZTcUE9PSIsInZhbHVlIjoiNVAwNmdvdHdVWjlWbU9GaDEydXlUczdudmpCOHd2NTgvTi9uV1FkbkxqUzVaTVpFOXNNTlNUZUdva1YvSUZqRjB4OSt1T3RTaFo1aUcyOWFwQkgwaUcweTJwTE80MFdpVmJENG91dCt2Nm1UZmovelZ6aDV5M2Jma3JORkNDVisiLCJtYWMiOiI5MjYyNmM0Mzk5Nzg0NmZiNDllN2U4ZDc4N2NjNDMyNWU1YWI1MzY2OWMzODAwN2YwM2IyYWJjNzI4MWRiYTc3In0%3D"
      "REQUEST_TIME_FLOAT" => 1620727475.4325
      "REQUEST_TIME" => 1620727475
    ]
  }
  +files: Symfony\Component\HttpFoundation\FileBag {#48
    #parameters: []
  }
  +cookies: Symfony\Component\HttpFoundation\InputBag {#46
    #parameters: array:2 [
      "XSRF-TOKEN" => "SpJdQJMGIC5ZFmQpMDksKiecq4WAxMgSGbh2h6Wg"
      "laravel_session" => "6Jd4zg6K4OsLCJPC5Ze223dRwQc6ikmUpIX4COxg"
    ]
  }
  +headers: Symfony\Component\HttpFoundation\HeaderBag {#49
    #headers: array:13 [
      "host" => array:1 [
        0 => "localhost:8000"
      ]
      "connection" => array:1 [
        0 => "keep-alive"
      ]
      "sec-ch-ua" => array:1 [
        0 => "" Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90""
      ]
      "sec-ch-ua-mobile" => array:1 [
        0 => "?0"
      ]
      "user-agent" => array:1 [
        0 => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
      ]
      "accept" => array:1 [
        0 => "*/*"
      ]
      "sec-fetch-site" => array:1 [
        0 => "same-origin"
      ]
      "sec-fetch-mode" => array:1 [
        0 => "cors"
      ]
      "sec-fetch-dest" => array:1 [
        0 => "empty"
      ]
      "referer" => array:1 [
        0 => "http://localhost:8000/dashboard/work"
      ]
      "accept-encoding" => array:1 [
        0 => "gzip, deflate, br"
      ]
      "accept-language" => array:1 [
        0 => "en-US,en;q=0.9,fa;q=0.8"
      ]
      "cookie" => array:1 [
        0 => "XSRF-TOKEN=eyJpdiI6Im1jWXAyYU5zaWNBbE9QaVRhWHEwZHc9PSIsInZhbHVlIjoiQitJV0xiaEVRc2tDWFVNZHN6RTJaQVFFNExmSWZudFZBb3RxdzVhdFJQdTI4bmFCYXBZYmtzcm1tbzFxYS8vR0xaTGNmTk9hemM5dDMvbzBRUmV5K1E1UVVORWRzR0RJeUNUWkkrcmNXeDdYMWlhYmU5WUE5U3lveXFoNldIenciLCJtYWMiOiI0MDA1MDM0NTE0Y2M2M2RjZjZmM2ZmNThkNzU2NTczZDkxNjFmMzRiOTgzMjY3ODJhMjQ3MDI3MDY2MWJkMTAzIn0%3D; laravel_session=eyJpdiI6IkN4ME9RUTl0SGVQNWtORjlRdjZTcUE9PSIsInZhbHVlIjoiNVAwNmdvdHdVWjlWbU9GaDEydXlUczdudmpCOHd2NTgvTi9uV1FkbkxqUzVaTVpFOXNNTlNUZUdva1YvSUZqRjB4OSt1T3RTaFo1aUcyOWFwQkgwaUcweTJwTE80MFdpVmJENG91dCt2Nm1UZmovelZ6aDV5M2Jma3JORkNDVisiLCJtYWMiOiI5MjYyNmM0Mzk5Nzg0NmZiNDllN2U4ZDc4N2NjNDMyNWU1YWI1MzY2OWMzODAwN2YwM2IyYWJjNzI4MWRiYTc3In0%3D"
      ]
    ]
    #cacheControl: []
  }
  #content: null
  #languages: null
  #charsets: null
  #encodings: null
  #acceptableContentTypes: null
  #pathInfo: "/dashboard/check_price/3"
  #requestUri: "/dashboard/check_price/3"
  #baseUrl: ""
  #basePath: null
  #method: "GET"
  #format: null
  #session: Illuminate\Session\Store {#1395
    #id: "6Jd4zg6K4OsLCJPC5Ze223dRwQc6ikmUpIX4COxg"
    #name: "laravel_session"
    #attributes: array:5 [
      "_token" => "SpJdQJMGIC5ZFmQpMDksKiecq4WAxMgSGbh2h6Wg"
      "url" => []
      "_previous" => array:1 [
        "url" => "http://localhost:8000/dashboard/check_price/2"
      ]
      "_flash" => array:2 [
        "old" => []
        "new" => []
      ]
      "login_web_59ba36addc2b2f9401580f014c7f58ea4e30989d" => 2
    ]
    #handler: Illuminate\Session\FileSessionHandler {#1394
      #files: Illuminate\Filesystem\Filesystem {#163}
      #path: "E:\Laravel-sites-design\www\hesabdari\storage\framework/sessions"
      #minutes: "120"
    }
    #started: true
  }
  #locale: null
  #defaultLocale: "en"
  -preferredFormat: null
  -isHostValid: true
  -isForwardedValid: true
  -isSafeContentPreferred: null
  basePath: ""
  format: "html"
}

ثبت پرسش جدید
رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش مطرح شد
1

سلام دوباره!

خب دقیقا مشکل از route شما هست
توی route گفتید {check_price} متغیر هست ولی توی کنترلر خودتون اون رو ارسال نکردید

    public function check_price(Request $request,$check_price)

    {

      dd([$request,$check_price]);

    }

این رو تست کنی فکر کنم حل بشه قضیه


رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش مطرح شد
0

سلام وقتتون بخیر!

کد contrller هم بذارید


نوب
تخصص : کدنویس نوب :)
@yk5742g 3 سال پیش مطرح شد
0

@Rp76

فقط توی متد مربوطه یه dd از request برای تست میگیرم

use Illuminate\Http\Request;
class WorkController extends Controller
{
    public function check_price(Request $request)
    {
      dd($request);
    }
}

رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش مطرح شد
0

خب پس مشکل از ‌js هست که زدی
داری اشتباه پارامتر ارسال میکنی البته اینطور که من دیدم

$.get(`check_price?rp=${valuess}`,function(data){
  console.log(data);
})

نوب
تخصص : کدنویس نوب :)
@yk5742g 3 سال پیش مطرح شد
0

@Rp76
سلام دوست عزیز
خب کدی که دادین که اون قسمت ?rp= کلا توی لاراول خطا میده 404 و من به صورت زیر تغییر دادم بازم مثل کد اولم هست
و وقتی توی کنترلر $request->product را میگیرم کلا null میده مقدارشو

<script>
        function showPrice(valuess) {
            $.get(`check_price/${valuess}`, function (data) {
                document.getElementById("order_price").innerHTML = data;
            })
        }
    </script>

رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش آپدیت شد
0

خب این کد بالا چیزی ارسال نمیکنه

این کد رو هم تست کن و بعد route رو هم برام بفرست حس میکنم Route رو اشتباه نوشتی

<script>

        function showPrice(valuess) {

            $.get(`check_price/${valuess}?id=1`, function (data) {

                document.getElementById("order_price").innerHTML = data;

            })

        }

    </script>

چون این route که میگی 404 میده رو من بار ها استفاده کردم.


نوب
تخصص : کدنویس نوب :)
@yk5742g 3 سال پیش مطرح شد
0

@Rp76
این روت من

    Route::get('/check_price/{check_price}', [WorkController::class, 'check_price'])->name('check_price');

اطلاعات توی قسمت parameters و کلید "PATH_INFO" نمایش داده میشه ولی به صورت رشته آدرس نشون میده
توی پست اول که گذاشتم ببینی آیدی 3 را پاس میده ولی به صورت آدرسه

      "PATH_INFO" => "/dashboard/check_price/3"

رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش مطرح شد
1

سلام دوباره!

خب دقیقا مشکل از route شما هست
توی route گفتید {check_price} متغیر هست ولی توی کنترلر خودتون اون رو ارسال نکردید

    public function check_price(Request $request,$check_price)

    {

      dd([$request,$check_price]);

    }

این رو تست کنی فکر کنم حل بشه قضیه


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام