提问者:小点点

如何向laravel控制器公共函数发送ajax请求


我有一个从laravel控制器加载数据的页面,有一个按钮可以调用jquery函数,

按钮值中有一个电话号码,所以我需要发送短信给那个号码,

这里我附上了我使用的代码,

短信网关功能齐全,出于安全考虑,我删除个人数据,

链接

<i><a class="btn btn-info" id="Confirm2" value="{{$padd->ContactNum02}}">Confirm</a></i>

JQ代码

<script type="text/javascript">
$(document).ready(function(){

  $("#Confirm2").click(function(){
    $("#ConfirmNo02input").show();
    $("#Confirm2").hide();

    OTPSend();
    var PhoneNum = $("#Confirm2").val();
    function OTPSend( PhoneNum) {
            
        $.ajax({
        url: 'OTP_send',
        type: 'POST',
        datatype:'json',
        data:{SearchKey:PhoneNum},
            })
            .done(function(data) {
                alert("run")
                console.log("run");
            })    
            .fail(function() {
                alert("fail")
                console.log("error");
            })
                }
    });
});
</script>

路线

Route::post('/OTP_send', 'ServicesController@OTP' )->name('OTP_send');

控制器文件

   public function OTP(Services $services)
    {
         
        $testNum='0753505625';
        $api_instance = new SmsApi();
        $user_id = "xxxxx";
        $api_key = "xxxxxxxxxxxxxxx";
        $message = "test SMS";
        $PhoneNo=ltrim( $testNum , "0");
        $to ="94".$PhoneNo;
        $sender_id = "NotifyDEMO";
        try {
            $api_instance->sendSMS($user_id, $api_key, $message, $to, $sender_id);
            } catch (Exception $e) {
            echo 'Exception when calling SmsApi->sendSMS: ', $e->getMessage(), PHP_EOL;
            } 
        return response()->json(['message' => 'successfull'],200);*/

    }

这个代码不起作用,你能帮我吗


共1个答案

匿名用户

您的代码中存在多个问题
首先像这样更改HTML,您需要的是按钮而不是链接。

<i><button class="btn btn-info" id="Confirm2" value="{{$padd->ContactNum02}}">Confirm</button></i>

将您的Javascript更改为这个

$(document).ready(function(){
  $(document).on('click','#Confirm2',function(e){
    e.preventDefault();
    $("#ConfirmNo02input").show();
    $("#Confirm2").hide();
    $.ajax({
        url: 'OTP_send', // URL for the function
        method:"POST",
        data:{
            phone:$("#Confirm2").val()
        },
        success:function(result){
            if(result.status == 'success'){
                alert('ran');
            }
            else{
                alert('failure');
            }
        }
    });
});

最后把你的控制器换成这个。

public function OTP(Request $request){
    $testNum='0753505625';
    // use this to send the text on number coming from the button
    // $testNum = $request->phone; 
    $api_instance = new SmsApi();
    $user_id = "xxxxx";
    $api_key = "xxxxxxxxxxxxxxx";
    $message = "test SMS";
    $PhoneNo=ltrim( $testNum , "0");
    $to ="94".$PhoneNo;
    $sender_id = "NotifyDEMO";
    try{
        $api_instance->sendSMS($user_id, $api_key, $message, $to, $sender_id);
        $response['status'] = 'success';
    }
    catch(Exception $e) {
        echo 'Exception when calling SmsApi->sendSMS: ', $e->getMessage(), PHP_EOL;
    } 
    return $response;
}

最后,确保你在ajax中经过的路线正确指向控制器的这个功能。